ElasticSearch 6.0.1:.../_forcemerge API 不随更多线程扩展(被节流了吗?)
ElasticSearch 6.0.1: .../_forcemerge API does not scale with more threads (is throttled?)
我正在使用 ES 6.0.1 并且必须对许多索引执行频繁的索引 open/append/close 模式,通常来自不同的客户端并行。 (是的,我每次都要打开关闭)
这导致每个索引有大量的小 Lucene 段,并且提到的序列随着时间的推移变得更慢(有时慢 2-5 倍)。默认的 ES 段合并策略显然做得不好。
当我使用 Force Merge API 合并索引中的段时,我的序列 returns 的性能对于已处理的索引恢复正常。但是,由于索引数量众多,我必须多次应用它来处理所有索引。自然地,我 运行 它在多个线程(连接)中,但似乎 ES 永远不会并行这个操作并且合并的结果速率是相同的,无论我发出多少并行请求。
我已经阅读并尝试了 here 的内容,但这没有帮助。
有人可以为此提出任何 w/a 的建议吗?
您可以通过 elasticsearch 配置文件更改 force_merge 线程池的大小,例如:
thread_pool.force_merge.size: 5
并且不要忘记在配置更改后重新启动 Elasticsearch。
我正在使用 ES 6.0.1 并且必须对许多索引执行频繁的索引 open/append/close 模式,通常来自不同的客户端并行。 (是的,我每次都要打开关闭)
这导致每个索引有大量的小 Lucene 段,并且提到的序列随着时间的推移变得更慢(有时慢 2-5 倍)。默认的 ES 段合并策略显然做得不好。
当我使用 Force Merge API 合并索引中的段时,我的序列 returns 的性能对于已处理的索引恢复正常。但是,由于索引数量众多,我必须多次应用它来处理所有索引。自然地,我 运行 它在多个线程(连接)中,但似乎 ES 永远不会并行这个操作并且合并的结果速率是相同的,无论我发出多少并行请求。
我已经阅读并尝试了 here 的内容,但这没有帮助。
有人可以为此提出任何 w/a 的建议吗?
您可以通过 elasticsearch 配置文件更改 force_merge 线程池的大小,例如:
thread_pool.force_merge.size: 5
并且不要忘记在配置更改后重新启动 Elasticsearch。