Unix 是否可以选择是否动态生成堆转储?

Unix 是否可以选择是否动态生成堆转储?,unix,jvm,websphere,signals,heap-dump,Unix,Jvm,Websphere,Signals,Heap Dump,我们有一个部署到运行在UNIX上的WebSphere服务器上的应用程序,我们遇到了两个问题: 几分钟后恢复的系统挂起-为了调查,我们需要线程转储(javacore) 系统挂起无法恢复,需要重新启动WebSphere—为了进行调查,我们需要线程转储和堆转储 问题是:当系统挂起时,我们不知道是问题1还是问题2 理想情况下,我们希望首先手动生成线程转储,然后等待系统是否恢复。如果没有,那么在重新启动WebSphere之前,我们将生成线程转储和堆转储 我知道kill-3(或kill-QUIT)命令。该命

我们有一个部署到运行在UNIX上的WebSphere服务器上的应用程序,我们遇到了两个问题:

  • 几分钟后恢复的系统挂起-为了调查,我们需要线程转储(javacore)
  • 系统挂起无法恢复,需要重新启动WebSphere—为了进行调查,我们需要线程转储和堆转储
  • 问题是:当系统挂起时,我们不知道是问题1还是问题2

    理想情况下,我们希望首先手动生成线程转储,然后等待系统是否恢复。如果没有,那么在重新启动WebSphere之前,我们将生成线程转储和堆转储

    我知道
    kill-3
    (或
    kill-QUIT
    )命令。该命令将仅生成线程转储(如果参数
    IBM\u HEAPDUMP=false
    ),或线程转储和堆转储(如果
    IBM\u HEAPDUMP=true
    )。但是,
    IBM_HEAPDUMP
    必须在WebSphere启动之前设置,并且在WebSphere运行时不能更改

    关于
    IBM_HEAPDUMP
    参数和
    kill-3
    命令,我的理解正确吗


    另外,是否可以按照我描述的方式获取日志?(即,在生成JVM诊断时,选择是否动态生成堆转储)

    您的理解与我阅读的所有内容一致

    然而,我相信你可以通过使用来完成你想要的。其中kill-3不可用,但可以在任何WebSphere系统上运行相同的命令

    在wsadmin或wsadmin脚本中执行:

    set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]​
    $AdminControl invoke $jvm generateHeapDump​
    $AdminControl invoke $jvm dumpThreads​
    

    非常感谢你。在阅读您的响应之后,我还找到了关于从WebSphere生成堆转储的链接:。它包含更详细的解释。