垃圾回收器对Solr的影响



我正在从事一个项目,该项目从Solr获取某些度量,将它们存储在Elastic Search上的索引中,并在Grafana上进一步以图形方式表示它们。在Solr中对垃圾收集进行了某些查询,如下所示:

  • 垃圾回收器如何以及哪些Solr指标(如错误、命中、插入等)受到影响
  • 我们应该跟踪哪些可能对Solr有影响的垃圾收集器指标?(如YGC YGCT FGC FGCT等)

提前感谢!

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

我将重点关注GC时间(新一代和旧一代),因为这将是应用程序(Solr)的主要中断。您可以通过JMX(这里有大量文档:https://wiki.apache.org/solr/SolrJmx,你可以在java.lang:type=GarbageCollector下找到GCbeans)。

在控制台上,您可以使用"jstat-GC$PID"转储GC度量,其中最相关的度量可以是([docs][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的更具体的细节,包括时间,以及每次暂停的持续时间(由GC引起,但也有其他原因),如下所示:

Total time for which application threads were stopped: 0.1135087 seconds

如果这能回答你的问题,请告诉我。

相关内容

  • 没有找到相关文章

最新更新