热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

elasticsearch集群效果比单机效果慢几个数量级,怎么回事呢

Elasticsearch搜索引擎,集群效果比单机效果差好多,怎么回事呢配置及数据描述服

Elasticsearch 搜索引擎,集群效果比单机效果差好多,怎么回事呢


配置及数据描述
  1. 服务器配置:4C8G云服务器

  2. 集群配置:3个节点,1个主节点,2个副本

  3. 数据数量:4000W

  4. 数据模型:4个字段,极其简单的模型

  5. 查询方式:term 精确查找

  6. ES版本:2.4.6

  7. 数据初始化:通过spark读取Hbase中的数据导入到ES中,4000W一次性导入

问题出现的环境背景及自己尝试过哪些方法

我们测试了单机的情况、集群的情况、集群降低到单机的情况,单机升级到集群的情况,得到结论如下,但是不知道什么原因造成的。暂时不考虑并发,只考虑单次请求,测试数据,是上万个单次请求,不命中缓存的情况下统计的结果。


  • 初始化数据到集群,集群的响应在速度400ms

  • 初始化数据到单机,单机的相应在速度20ms

  • 初始化数据到集群,在降低成单机,单机相应速度在20ms(这个过程是一个缓慢的过程,也就是说,刚降低成单机的时候,速度由原来的400ms变成150ms,过了几个小时后响应速度成50ms,到第二天的时候达到极致速度,10ms,由于中间有测试空档期,也许不需要到第二天速度已经达到极致了)

  • 初始化数据到集群,降低成单机,再升级成集群,集群相应速度在20ms

在单次请求的情况下,集群性能比单机慢点是可以接受的,但是如果如我上面解释的那样,慢20倍,感觉是比较可疑的。


期望了解的内容:
  1. 数据初始化的时候ES的存储方式是怎么处理的?

  2. 由集群变成单机,是否触发了ES的一些内部存储结构的变化,索引数据整理之类的,导致速度猛然提升?

拓展部分 - 想讨论了解一下ES的缓存机制

在测试的过程中发现了这样几个奇怪的关于缓存的处理方式



    1. 单机情况下:我根据条件查询出来2条数据,响应是20ms,如果我再次使用当前条件查询,响应一直在2--4ms之间,也就是说命中了缓存导致的结果,那么我直接使用请求往里面写入一条数据,符合当前查询条件的,查询之后,依然是2--4ms之间,同时把我新写入的数据也给查出来了,同理,我删除数据也是,命中缓存,且数据实时更新。


    1. 集群情况下:我第一次查询速度在400ms,第二次查询速度在400ms,第三次查询速度在50ms,第四次也是50ms。猜测结论是,第三次和第四次命中了缓存,但是因为两次才命中缓存,猜测是不是第一次查询把查询结果落在了第一个机器上,数据缓存在第一个机器上;第二次查询把查询结果落在了第二个机器上,那么缓存也在第二个机器上,所以才会出现,第二次查询响应速度也很慢?


    推荐阅读
    • 第二章:Kafka基础入门与核心概念解析
      本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
    • 本文介绍了Elasticsearch (ES),这是一个基于Java开发的开源全文搜索引擎。ES通过JSON接口提供服务,支持分布式集群管理和索引功能,特别适合大规模数据的快速搜索与分析。 ... [详细]
    • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
    • 构建高性能Feed流系统的设计指南
      随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
    • 本文总结了WebSphere应用服务器出现宕机问题的解决方法,重点讨论了关键参数的调整,包括数据源连接池、线程池设置以及JVM堆大小等,旨在提升系统的稳定性和性能。 ... [详细]
    • 深入解析Spark核心架构与部署策略
      本文详细探讨了Spark的核心架构,包括其运行机制、任务调度和内存管理等方面,以及四种主要的部署模式:Standalone、Apache Mesos、Hadoop YARN和Kubernetes。通过本文,读者可以深入了解Spark的工作原理及其在不同环境下的部署方式。 ... [详细]
    • 构建Filebeat-Kafka-Logstash-ElasticSearch-Kibana日志收集体系
      本文介绍了如何使用Filebeat、Kafka、Logstash、ElasticSearch和Kibana构建一个高效、可扩展的日志收集与分析系统。各组件分别承担不同的职责,确保日志数据能够被有效收集、处理、存储及可视化。 ... [详细]
    • 解决getallheaders函数导致的500错误及8种服务器性能优化策略
      本文探讨了解决getallheaders函数引起的服务器500错误的方法,并介绍八种有效的服务器性能优化技术,包括内存数据库的应用、Spark RDD的使用、缓存策略的实施、SSD的引入、数据库优化、IO模型的选择、多核处理策略以及分布式部署方案。 ... [详细]
    • 深入浅出:Hadoop架构详解
      Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
    • Java虚拟机及其发展历程
      Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
    • Spark与HBase结合处理大规模流量数据结构设计
      本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
    • 本文探讨了在使用MyBatis Generator过程中遇到的'Communication Link Failure'错误,并提供了多种有效的解决方案。 ... [详细]
    • 本文详细介绍了ASP.NET缓存的基本概念和使用方法,包括输出缓存、数据缓存及其高级特性,如缓存依赖、自定义缓存和缓存配置文件等。通过合理利用这些缓存技术,可以显著提升Web应用程序的性能。 ... [详细]
    • 深入解析 Golang 中的 Cache::remember 方法实现
      本文详细探讨了如何在 Golang 中实现类似于 Laravel 的 Cache::remember 方法,通过具体的代码示例和深入的分析,帮助读者更好地理解和应用这一技术。 ... [详细]
    • 大数据SQL优化:全面解析数据倾斜解决方案
      本文深入探讨了大数据SQL优化中的数据倾斜问题,提供了多种解决策略和实际案例,旨在帮助读者理解和应对这一常见挑战。 ... [详细]
    author-avatar
    旺仔牛叉糖
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有