滚动API对节点的CPU利用率有什么影响?我在ES version 6.2上体验了滚动API的高CPU利用率。
即使查询一次以获取所有数据,然后使用scroll_id获取数据,我们仍然会体验CPU峰值。
另外,缓存的结果存储在哪里?在内存里还是磁盘上?
发布于 2018-12-18 14:46:32
使用后,应清除滚动“指针”。
超过滚动超时时,搜索上下文将自动删除。但是,保持卷轴打开是有代价的,正如上一节所讨论的那样,因此,当滚动卷不再使用透明滚动API时,就应该显式地清除卷轴:
如所述这里
通常,背景合并过程通过合并较小的段以创建新的更大段来优化索引,此时较小的段被删除。此过程在滚动期间继续进行,但打开的搜索上下文会防止旧段在仍在使用时被删除。这就是Elasticsearch能够返回初始搜索请求的结果的方式,而不管对文档的后续更改如何。
所以,如果你理解得很好,就没有缓存。只是查询所针对的片段会被冻结,直到滚动过期。由于段在Lucene中是不可变的,它确保您将有一致的结果,并且您将能够滚动创建滚动卷时存在的所有数据。但缺点是,只要你的滚动“指针”存在,目标段将保持打开,而不是删除。
因此,打开的段数将继续增加,所需的文件处理程序也将增加。因此,对于一个广泛的查询,特别是如果您同时进行索引,可能会导致性能问题。因为当您索引时,您创建了许多应该在之后合并的小段,但是如果您对它们执行滚动查询,它们就不能被完全合并和删除。
是否连续索引,滚动持续时间有多长?
https://stackoverflow.com/questions/53833289
复制相似问题