尝试在64位CentOS机器上诊断一些奇怪的Tomcat(7.0.21
)和/或JVM错误。
我正在对服务器应用程序进行负载测试,并尝试使用100K个消息来击中它。启动了jvisualvm
,并一直关注堆。一切看起来都很好*(见下文),直到处理了大约93K条消息,然后Tomcat就崩溃了。运行了ps
以确认Tomcat已停止。
在此崩溃之前:
- 负载测试已运行约90分钟;由于我们已经处理了93K / 100K,因此应该很快完成
- CPU保持在45%左右
- 使用的堆大小约为2GB(在GC后加减少),但堆大小在30分钟后从4GB增长到
MAX_HEAP
- 类加载/卸载正常循环
- 线程转储正常
在服务器代码中根本没有调用System.exit()
- 因此我们可以排除这个原因(是的,我已经仔细检查过了!)。
我不确定这是Tomcat崩溃还是JVM(我该如何判断?)。即使我知道了,我似乎也找不到任何有关发生了什么事情的迹象:
- 所有服务器应用程序的日志都停止而不显示任何错误消息(即使我们将日志普遍设置为DEBUG或更高)
- Tomcat的
catalina.out
和相应的localhost_access_*
文件也停止了,没有任何信息
我听说在Tomcat崩溃时记录核心转储是可能的,但不确定如何做到这一点,而在线示例也没有什么帮助。
StackOverflow会如何诊断此问题?我应该采取哪些步骤来开始排除所有可能的因素?
提前致谢!