我看到每次遇到ES高CPU问题,总是Lucene Merge Thread。
据我了解,段已经排序,所以您每次只是合并两个排序的段,就像合并排序的合并过程一样。为什么合并会如此昂贵。还是我遗漏了什么?
最佳答案
合并过程在 IO 和 CPU 上的成本很高的原因有几个:
- Lucene 使用
Skip list
数据结构,它们的合并成本很高,有一篇关于Skip list merge
的好文章 here . - 两个并行合并可以同时发生。
- Lucene 将需要创建第三个段并合并两个段,因此您需要足够的空间。
有一篇关于分段合并的好博文 here .
关于elasticsearch - 为什么在 Elasticsearch 中以昂贵的 CPU 方式合并段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67497626/