我们有一个部署到UNIX上运行的WebSphere服务器的应用程序,我们遇到了两个问题:
问题是:当系统挂起时,我们不知道它是问题1还是2。
理想情况下,我们首先要手动生成线程转储,然后等待系统恢复。如果没有,那么我们在重新启动WebSphere之前生成线程转储和堆转储。
我知道kill -3
(或kill -QUIT
)命令。该命令将仅生成线程转储(如果参数IBM_HEAPDUMP=false
),或者线程转储和堆转储(如果IBM_HEAPDUMP=true
)。但是,必须在WebSphere启动之前设置IBM_HEAPDUMP
,并且在WebSphere运行时不能更改它。
关于IBM_HEAPDUMP
参数和kill -3
命令,我的理解是否正确?
此外,是否可以按照我描述的方式获取日志? (即,在生成JVM诊断时,选择是否即时生成堆转储)
答案 0 :(得分:2)
您的理解与我读过的所有内容一致。
但是,我相信您可以使用wsadmin scripting来完成您想要的任务。 {3}}其中kill -3不可用,但可以在任何WebSphere系统上运行相同的命令。
在wsadmin或wsadmin脚本中,执行:
set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]
$AdminControl invoke $jvm generateHeapDump
$AdminControl invoke $jvm dumpThreads