elasticsearch,Performance,elasticsearch" /> elasticsearch,Performance,elasticsearch" />

Performance elasticsearch中热线程的解释

Performance elasticsearch中热线程的解释,performance,elasticsearch,Performance,elasticsearch,在索引文档时,我的elasticsearch集群中所有节点都面临高IO等待。 从网上的一些帖子中,我了解了elasticsearch中的热点。我收集了热线程API的输出。 请参见以下输出: 55.0% (275.1ms out of 500ms) cpu usage by thread 'elasticsearch[01][refresh][T#1]' 7/10 snapshots sharing following 24 elements java.lang.Objec

在索引文档时,我的elasticsearch集群中所有节点都面临高IO等待。 从网上的一些帖子中,我了解了elasticsearch中的热点。我收集了热线程API的输出。 请参见以下输出:

55.0% (275.1ms out of 500ms) cpu usage by thread 'elasticsearch[01][refresh][T#1]'
     7/10 snapshots sharing following 24 elements
       java.lang.Object.wait(Native Method)
       java.lang.Object.wait(Object.java:502)       org.apache.lucene.index.DocumentsWriterFlushControl.waitForFlush(DocumentsWriterFlushControl.java:272)

53.6% (267.8ms out of 500ms) cpu usage by thread 'elasticsearch[01][bulk][T#1]'
     3/10 snapshots sharing following 37 elements
       sun.nio.ch.FileDispatcherImpl.force0(Native Method)
       sun.nio.ch.FileDispatcherImpl.force(FileDispatcherImpl.java:76)
       sun.nio.ch.FileChannelImpl.force(FileChannelImpl.java:388)
       org.elasticsearch.index.translog.TranslogWriter.syncUpTo(TranslogWriter.java:272)
       org.elasticsearch.index.translog.Translog.ensureSynced(Translog.java:521)

除刷新间隔(30秒)外,所有其他配置均为默认配置。 从上面的热线程输出中,有人能解释是什么让我的ES节点等待这么长时间吗。我知道第一个线程说它在等待刷新,第二个线程说它在等待translog, 我应该尝试哪种配置调优?
注意:我正在使用更新操作为我的文档编制索引,文档更新非常频繁。

在更新期间,Elasticsearch需要“提交”其数据以使其可搜索(最初写入Translog,然后刷新到索引段。Elasticsearch中的提交操作对于IO/CPU来说是一项繁重的操作。通常,在繁重的更新操作期间,您希望尽可能少地执行提交操作

与此相关的参数称为
index.refresh\u interval

执行刷新操作的频率,该操作会进行最近的更改 到搜索可见的索引。默认值为1s


您应该尝试在频繁更新(有利于数据可见性)和减少更新频率以保持性能之间找到平衡。您可以尝试将其设置为
1m
或更大的值。理想值在很大程度上取决于您的用例在更新期间,Elasticsearch需要“提交”其数据以使其可搜索(最初写入Translog,然后刷新到索引段。Elasticsearch中的提交操作对于IO/CPU来说是一项繁重的操作。通常,在繁重的更新操作期间,您希望尽可能少地执行提交操作

与此相关的参数称为
index.refresh\u interval

执行刷新操作的频率,该操作会进行最近的更改 到搜索可见的索引。默认值为1s


您应该尝试在频繁更新(有利于数据可见性)和减少更新频率以保持性能之间找到平衡。您可以尝试将其设置为
1m
或更大的值。理想值在很大程度上取决于您的用例

谢谢@Mystion,我随时可以尝试,您可以建议其他参数吗?如果我们尝试增加索引缓冲区大小?这会有助于提高吞吐量吗?默认值是允许堆的10%,因此,更理想的做法是尝试增加堆大小,但是,我怀疑它会改变行为muchThanks@Mystion,我总是可以尝试,你能建议其他参数吗?如果我们尝试增加索引缓冲区,会怎么样_大小?这会有助于提高吞吐量吗?默认值是允许堆的10%,所以更好的办法是尝试增加堆大小,但是,我怀疑它会改变很多行为