在websphere下面手工产生HeapDump
查找 JVM objectName:
<wsadmin> set objectName [$AdminControl queryNames
WebSphere:type=JVM,process=<servername>,node=<nodename>,*]
对 JVM MBean 调用 generateHeapDump 操作:
<wsadmin> $AdminControl invoke $objectName generateHeapDump
其中:
$是使用其值替换变量名的 Jacl 运算符
invoke是命令
generateHeapDump是要调用的操作
<servername>是服务器的名称,将在该服务器上生成堆转储
<nodename>是 <servername> 所属的节点
具体操作
./wsadmin.sh
WASX7029I: For help, enter: "$Help help"
wsadmin>set objectName [$AdminControl queryNames WebSphere:type=JVM,process=server-2,node=RHEL2Node01,*]
WebSphere:name=JVM,process=server-2,platform=proxy,node=RHEL2Node01,j2eeType=JVM,J2EEServer=server-2,version=7.0.0.29,type=JVM,mbeanIdentifier=JVM,cell=RHEL2Cell01,spec=1.0
wsadmin>$AdminControl invoke $objectName generateHeapDump
/opt/IBM/WAS7/AppServer/profiles/AppSrv01/./heapdump.20130731.094218.1585.0001.phd
另外的方法,
先设置环境变量
IBM_HEAP_DUMP=true,
重新启动websphere
采用kill -3 产生threaddump和heapdump。这种方法没试过,
kill -3 产生threaddump是不用设置环境变量的。
使用ISA进行监控,还是很方便的,ISA(IBM Support Assistant Workbench),
一般WebSphere都支持了health center的功能,在WebSphere安装目录下下查找一下healthcenter.jar,
有设置一下虚拟机的参数 -agentlib:healthcenter -Xtrace:output=perfmon.out,重启服务器。
连接上去后