【问题标题】:Elasticsearch Query time took increases.Elasticsearch 查询时间增加。
【发布时间】:2018-12-11 19:40:01
【问题描述】:

最近我试图记下一个查询执行的平均时间。在弹性搜索上不断触发查询时,我注意到有时响应中的 take 字段会突然飙升。例如,如果查询在正常情况下返回 4-6 毫秒,那么它会在两者之间意外返回 30 毫秒。 我的其他查询也是如此。所以这个异常似乎不是特定于查询的。

任何人都可以解释在这个查询的字段中肯定会发生的峰值吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    在连续触发查询时,以下情况可能会导致所用时间激增:

    1. 垃圾收集:每当内部触发大型垃圾收集过程时,Elasticsearch 所花费的时间预计会降低。变化取决于花在流程上的时间。在某种程度上,这可以通过 Kibana 的监控页面观察到。在这种情况下,内存密集型的聚合查询很可能会受到影响。
    2. 如果查询是并行触发的,则队列中可能会出现阻塞,其中查询堆积。由于多个线程执行多个查询,这可能会在短时间内降低整体性能(增加内存消耗)。
    3. 三级活动:如果 ES 忙于优化 IO 密集型操作的分段,则搜索查询可能会受到影响。如果正在执行查询的同一索引上执行其他操作(如索引),那么这也会产生影响。

    【讨论】:

    • 嗨。我很确定没有并行运行的查询。
    • 连续查询之间没有索引,因为这都是在我的本地机器上运行的。
    • 另外,由于垃圾收集器,该模式过于频繁。但我使用的是带有默认 G1 垃圾收集器的 java 8 的 elasticsearch 2.1。这会影响我的查询时间吗?
    • ES 官方直到 v6.5 才支持 G1 GC 策略,因为已知的 bug。我不能准确;你说它对旧版本的 ES 的影响。退房 -> elastic.co/guide/en/elasticsearch/reference/current/…
    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 2017-09-07
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多