垃圾收集器对Solr的影响

垃圾收集器对Solr的影响

问题描述:

我正在研究从Solr获取特定度量标准的项目,将它们存储在弹性搜索的索引上,并在Grafana上进一步用图形表示它们。对Solr垃圾收集有一定的疑问,他们如下:垃圾收集器对Solr的影响

  • 垃圾收集器如何影响Solr(如错误,命中,插入等)的度量?
  • 我们应该跟踪哪些可能影响Solr的垃圾回收器度量? (如YGC YGCT FGC FGCT等)

在此先感谢!

+0

另请参阅https://wiki.apache.org/solr/SolrPerformanceProblems和https://wiki.apache.org/solr/ShawnHeisey#GC_Tuning_for_Solr – Risadinha

GC不应该改变应用程序逻辑本身:命中等指标取决于Solr数据存储的内容,而不取决于GC是否运行或如何运行。错误可能会受到GC行为的影响,主要是由于大量GC暂停造成的超时,这是我首先需要跟踪的。

我会专注于GC时代(无论是新一代还是老一代),因为这些将成为应用程序(Solr)的主要中断。你可以通过JMX来做到这一点(这里有大量的文档:https://wiki.apache.org/solr/SolrJmx,你可以在java.lang中找到GC beans:type = GarbageCollector)。只需勾选您的分析器或选择的监视工具即可。

使用 “jstat -gc $ PID” 控制台,你可以转储GC的指标,其中最相关的指标可能是([文件] [1]):

YGC: Number of young generation garbage collection events. 
YGCT: Young generation garbage collection time. 
FGC: Number of full GC events. 
FGCT: Full garbage collection time. 

注意时间是累积的。如果您将间隔添加到jstat命令,它将连续输出统计信息。

基于这些数字,如果您遇到GC暂停尖峰,并且与Solr错误峰值相关,您可以考虑减少它们。

虽然我们在这,跟踪GC时期的另外一个好办法,就是让:

-XX:+PrintGCApplicationStoppedTime 
-XX:+PrintGCDetails 

,纪录更具体的细节每个GC,包括时间,以及每次暂停期间(引起的气相色谱,但也有其他原因)在这样的行:

Total time for which application threads were stopped: 0.1135087 seconds 

让我知道如果这回答你的问题。