Java(Solr)线程转储有多昂贵?

5
作为一些进行中的维护工作的一部分,我们一直在以一分钟的间隔对JVM中所有线程进行定期线程转储。 (例如:curl http://localhost:8983/solr/admin/threaddump.jsp)
如果继续无限期地保持这种做法,会有哪些性能或其他负面影响?
1个回答

2

通常,JVM线程转储是廉价且对应用程序没有太大影响的。另一方面,Jmap -histos可能会对性能产生非常大的影响。我在维护部门工作,我们经常进行线程转储,从未见过由于线程转储而直接导致崩溃的情况。

每分钟运行一次转储的唯一问题是信息过多。

您是否将转储附加到单独的文件中?根据我的经验,您必须随着时间的推移查看转储以捕获诸如瞬态锁争用之类的事情。


我认为目前我们只计划解析并将线程计数(和可能的类型)写入日志文件,并在出现明显偏差时发出警报。 - Ryan Roemer
注意线程,等待锁定,如果您要遇到严重的锁争用,那就是如何发现它的方法。当然,一些锁争用是正常的。干杯。 - KaizenSoze
我们确实遇到了可重现的 JVM 崩溃问题,每隔 5 分钟进行一次线程转储。在一天内最多不超过两次,JVM 进程就会崩溃。该进程存在一些线程泄漏,其中线程数可以达到 3500。但是如果没有线程转储,它可以正常运行而不会泄漏。线程泄漏是否会导致线程转储崩溃 JVM? - rufushuang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接