Yourkit 在次要 GC 集合中延长 STW 暂停?

Posted

技术标签:

【中文标题】Yourkit 在次要 GC 集合中延长 STW 暂停?【英文标题】:Yourkit prolonging STW-pauses in minor GC-collections? 【发布时间】:2015-01-20 10:40:57 【问题描述】:

我们已经开始使用 Yourkit 版本 11 监控我们的应用程序。自从我们这样做以来,我们有时会观察到非常奇怪的行为。次要垃圾回收有时会导致 stop-the-world 暂停超过两分钟。

【问题讨论】:

从那时起已经有了三个主要版本。如果是 YourKit 中的 bug,可能已经在 2014 版本中修复,建议您尝试一下。 您能提供您的 GC 日志的 sn-p 吗? 【参考方案1】:

次要收集中的长时间 STW 暂停可能是由本机线程引起的,本机线程必须在实际收集开始之前达到安全点(例如这里提到的:Java GC safepoint 或这里:Long incidental Young garbage collection pauses)。

Yourkit 与分析器代理(一个 .so/.dll 文件)一起使用,使用了此类本地调用。实际执行这些调用的线程是从分析器中的线程视图中过滤出来的,并且看不到。这就是为什么 Yourkit 本身的堆栈跟踪视图无助于分析该问题的原因。

如果您停止在代理模式下使用 yourkit,问题就会消失。

编辑

根据 Peter Lawrey 的建议,我们下载了 yourkit 2014 的试用版。代理已经在生产环境中运行了两天,问题不再出现。

【讨论】:

请提供有关导致 STW 暂停的 YourKit 线程的详细信息(此处或支持(at)yourkit.com)。最好的问候,Vladimir Kondratyev YourKit, LLC

以上是关于Yourkit 在次要 GC 集合中延长 STW 暂停?的主要内容,如果未能解决你的问题,请参考以下文章

JVM中的STW和CMS

如何获取GC(垃圾回收器)的STW(暂停)时间?

.NET GC工作流程

.NET GC工作流程

Golang实验性功能SetMaxHeap 固定值GC

jvm GC参数调优