首页 > 解决方案 > Elasticsearch 随机慢查询问题排查

问题描述

我将我的数据从 Elasticsearch 集群移动到另一个具有强大硬件的集群(4 个节点/2CPU 8GB RAM,每个节点在每台机器的 JVM 上 4GB//旧集群有 3 个节点,每个节点有 1 个 cpu,每台机器在 JVM 上 2GB)但我是随机遇到一些我在旧集群上没有的非常慢的查询响应。

两个节点上相同的 ES 版本 6.8.14 和相同的文档编号/分片(62GB 数据/1.06 亿个文档)。

在新集群上使用分析器从 kibana 启动查询表明大部分时间都花在了这个阶段:

            "collector" : [
          {
            "name" : "CancellableCollector",
            "reason" : "search_cancelled",
            "time_in_nanos" : 5777066437,
            "children" : [
              {
                "name" : "MultiCollector",
                "reason" : "search_multi",
                "time_in_nanos" : 5756203807,
                "children" : [
                  {
                    "name" : "SimpleTopScoreDocCollector",
                    "reason" : "search_top_hits",
                    "time_in_nanos" : 747674917
                  },
                  {
                    "name" : "MultiBucketCollector: [[min_price, max_price, in_stock, out_of_stock, category, agg_h, mdata, agg_att, agg_f]]",
                    "reason" : "aggregation",
                    "time_in_nanos" : 4966026553
                  }
                ]
              }
            ]
          }
        ]

每个节点的 CPU 使用率非常低 (5/10%),平均负载还可以 (0.50)

在短时间内再次启动相同的查询会将响应从 8 秒降低到 0.4 秒(我猜是因为 ES 缓存),从查询中删除“aggs”部分似乎也解决了这个问题,因此性能不佳实际上是在聚合器阶段.

无论如何,我不明白为什么这种减速只发生在新的“更好”集群上......我怎样才能优化性能或更好地排除故障?

标签: performanceelasticsearchkibanaelastic-stack

解决方案


推荐阅读