垃圾收集器对 Solr 的影响
Garbage Collector implications on 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 下找到 GC bean)。只需连接您选择的分析器或监控工具。
在控制台上,您可以使用 "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
如果这回答了您的问题,请告诉我。
我正在开发一个项目,该项目从 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 下找到 GC bean)。只需连接您选择的分析器或监控工具。
在控制台上,您可以使用 "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
如果这回答了您的问题,请告诉我。