Elastic Search Scroll API对CPU的影响

时间:2018-12-18 12:43:51

标签: elasticsearch scroll cpu

scroll API对节点的CPU利用率有什么影响? ES version 6.2上的滚动API的CPU使用率很高。

即使查询一次完成以获取所有数据,然后使用scroll_id来获取数据,我们仍会遇到CPU高峰。

还将缓存结果存储在哪里?在内存还是磁盘上?

1 个答案:

答案 0 :(得分:0)

使用后,应清除滚动“指针”。

  

当滚动超时达到   被超过。但是,如前所述,保持卷轴打开是有代价的   在上一节中,因此滚动条应明确清除为   一旦清除滚动不再使用滚动   API:

如描述here

  

通常,后台合并过程通过合并来优化索引   合并较小的细分以创建新的较大细分,   较小的段将被删除。此过程在   滚动,但开放的搜索上下文可防止旧段   仍在使用中被删除。这就是Elasticsearch的方式   能够返回初始搜索请求的结果,   不管随后对文档进行的更改。

因此,如果您了解得很好,就不会有缓存。只是冻结了查询所针对的细分,直到滚动过期。由于段在Lucene中是不可变的,因此可以确保您获得一致的结果,并且可以滚动创建滚动时存在的所有数据。但是缺点是只要您的滚动“指针”存在,目标句段将保持打开状态而不被删除。

因此,打开的段的数量将继续增加,并且必要的文件处理程序也将增加。因此,在广泛的查询中,尤其是如果您同时在建立索引,可能会导致性能问题。 自从建立索引以来,您创建了许多小片段,这些小片段应在以后合并,但是如果对它们进行滚动查询,它们将无法完全合并和删除。

您是否连续索引并且滚动持续时间有多长?

From documentation