我们有一个应用程序部署到在 UNIX 上运行的 WebSphere 服务器上,我们遇到了两个问题:
- 几分钟后恢复的系统挂起 - 要进行调查,我们将需要线程转储(javacore)。
- 无法恢复并需要重新启动 WebSphere 的系统挂起 - 为了进行调查,我们将需要线程转储和堆转储。
问题是:当系统挂起时,我们不知道是问题 1 还是问题 2。
理想情况下,我们希望先手动生成线程转储,然后等待系统是否恢复。如果没有,那么我们在重新启动 WebSphere 之前生成线程转储和堆转储。
我知道kill -3
(或kill -QUIT
)命令。该命令将仅生成线程转储(如果参数IBM_HEAPDUMP=false
),或线程转储和堆转储(如果IBM_HEAPDUMP=true
)。但是,IBM_HEAPDUMP
必须在 WebSphere 启动之前设置,并且在 WebSphere 运行时不能更改。
IBM_HEAPDUMP
关于参数和命令,我的理解是否正确kill -3
?
另外,是否可以按照我描述的方式获取日志?(即在生成 JVM 诊断时,选择是否即时生成堆转储)