Elasticsearch查询时间增加



最近我试图记下查询执行所花费的平均时间。当我在弹性搜索上不断发出查询时,我注意到有时响应中的take字段会突然激增。例如,如果查询在正常情况下返回4-6ms,则在这两者之间会意外返回30ms。我的其他查询也是如此。因此,这种异常现象似乎并不是特定于查询的。

有人能解释一下这个查询的take字段中肯定会出现的峰值吗?

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

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

最新更新