弹性搜索Scroll API对CPU的影响

问题描述 投票:1回答:1

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

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

缓存结果存储在哪里?在内存或磁盘上?

elasticsearch scroll cpu
1个回答
0
投票

您应该在使用后清除滚动“指针”。

超出滚动超时时,将自动删除搜索上下文。但是,保持滚动打开会产生成本,如上一节所述,因此只要使用clear-scroll API不再使用滚动,就应该显式清除滚动:

正如描述here

通常,后台合并过程通过将较小的段合并在一起来创建新的更大的段来优化索引,此时删除较小的段。此过程在滚动期间继续,但打开的搜索上下文可防止旧片段在仍在使用时被删除。这就是Elasticsearch能够返回初始搜索请求的结果,无论后续的文档更改如何。

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

因此,打开的段的数量将不断增加,并且必要的文件处理程序也将增加。因此,在广泛的查询中,特别是如果您在同一时间索引,它可能会导致性能问题。从索引开始,您创建了许多应该在之后合并的小段,但如果对它们进行滚动查询,则无法完全合并和删除它们。

您是否连续编制索引以及滚动持续时间有多长?

From documentation

© www.soinside.com 2019 - 2024. All rights reserved.