gpt4 book ai didi

unix - 是否可以选择是否即时生成堆转储?

转载 作者:行者123 更新时间:2023-12-04 21:21:51 24 4
gpt4 key购买 nike

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

  • 几分钟后恢复的系统挂起 - 为了进行调查,我们将需要线程转储 (javacore)。
  • 无法恢复并需要重新启动 WebSphere 的系统挂起 - 为了进行调查,我们将需要线程转储和堆转储。

  • 问题是:当发生系统挂起时,我们不知道是问题 1 还是问题 2。

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

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

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

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

    最佳答案

    你的理解与我读过的所有内容一致。

    但是,我相信您可以通过使用 wsadmin scripting 来完成您想要的事情。 . This article describes how to force javacores and heapdumps on a Windows platform其中 kill -3 不可用,但可以在任何 WebSphere 系统上运行相同的命令。

    从 wsadmin 或 wsadmin 脚本中,执行:

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

    关于unix - 是否可以选择是否即时生成堆转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10616398/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com