Websphere 上的堆转储生成

heap dump generation on websphere

I have enabled automatic heap dump generation on Websphere application server 8.5.5 by below steps.

Appserver>>process definition>>environment entries

Added below 2 entries.

IBM_HEAPDUMP = TRUE
IBM_HEAPDUMP_OUTOFMEMORY = TRUE

I just want to know how frequently heap dump will be generated? example out of 15 request. 10 request, we have faced outofMemoryerror: java heap space. Heap dump will generate for 1 time or 10 times?

使用环境变量没有这样的功能。

IBM_HEAPDUMP 仅在设置为 false 以完全禁用堆转储时有用。将其设置为 true 是多余的,因为这是默认设置。

IBM_HEAPDUMP_OUTOFMEMORY也是如此。默认启用对 OutOfMemoryError 进行堆转储。

您可以在此处找到有关这些环境变量的更多信息:https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.vm.80.doc/docs/env_j9.html

请注意,不再推荐使用 envars 来控制转储,以支持 -Xdumphttps://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.vm.80.doc/docs/dump_agents.html

话虽如此,不存在无需触发即可自动生成堆转储的功能。您可以在此处找到有关如何请求堆转储的各种方法:https://publib.boulder.ibm.com/httpserv/cookbook/Troubleshooting-Troubleshooting_WebSphere_Application_Server-Troubleshooting_WAS_Traditional.html#Troubleshooting-Troubleshooting_WAS_Traditional-Request_Heap_Dump

最简单的方法可能是编写脚本。您没有指定您使用的是哪个操作系统,但我猜它是基于 POSIX 的 IBM Java,所以我会使用 Java 手术和 shell 脚本:

#!/bin/sh
while true; do
  java -jar surgery.jar -command HeapDump -pid 
  sleep 
done

https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=7d3dc078-131f-404c-8b4d-68b3b9ddd07a