【问题标题】:heap dump generation on webspherewebsphere 上的堆转储生成
【发布时间】:2018-07-05 08:29:34
【问题描述】:

我已在 Websphere 应用程序上启用自动堆转储生成 服务器 8.5.5 通过以下步骤。

Appserver>>进程定义>>环境条目

添加了以下 2 个条目。

IBM_HEAPDUMP = TRUE
IBM_HEAPDUMP_OUTOFMEMORY = TRUE

我只想知道堆转储的生成频率? 15 个请求中的示例。 10个请求,我们遇到了outofMemoryerror: java堆空间。 Heap dump 会生成 1 次还是 10 次?

【问题讨论】:

    标签: websphere-8 heap-dump


    【解决方案1】:

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

    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,所以我会使用带有 shell 脚本的 Java Surgery:

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

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

    【讨论】:

    • 我的错,忘了提到操作系统名称。 Linux。感谢您的链接,真的很有帮助。
    • 好的,对于 Linux 上的 IBM Java,我通常建议使用核心转储而不是 PHD,因为核心转储是一个超集。因此,要手动生成核心转储,只需安装 gdb,然后运行 ​​gcore ${PID},将文件重命名为 .dmp 扩展名,然后将其加载到 IBM MAT 工具中:publib.boulder.ibm.com/httpserv/cookbook/…
    猜你喜欢
    • 2017-03-07
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2010-11-20
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    相关资源
    最近更新 更多