【问题标题】:force or generate jvm core dump ( IBM JVM ) [duplicate]强制或生成 jvm 核心转储(IBM JVM)[重复]
【发布时间】:2011-04-07 06:00:04
【问题描述】:

可能重复:
Can I force generation of a JVM crash log file?

如何在 Java 应用服务器或一般情况下强制或生成 JVM 核心转储?

【问题讨论】:

  • 您正在寻找的应用服务器
  • 这个问题应该重新打开并改写为 How to force the IBM JVM to generate core dumps 下面 Damodar 的回答非常好。
  • 不是重复的(我认为),核心转储不是崩溃日志(我认为)!
  • 我已编辑标题并投票决定重新打开。如果您有任何代表并到达这里,请考虑重新开放。

标签: java apache jakarta-ee jvm websphere


【解决方案1】:

问题(摘要):为了诊断与在 WebSphere Application Server Community Edition 上运行的客户应用程序的挂起或性能不佳相关的问题,用户需要生成各种转储并将它们发送给 IBM支持诊断。

本技术说明解释了当 WebSphere Application Server Community Edition 作为操作系统服务运行时如何生成所需的转储。本技术说明适用于 IBM Java SDK 1.5.0 和 IBM Java SDK 1.6.0

原因:当客户应用程序在 IBM Java SDK 1.5.0 或 IBM Java SDK 1.6.0 上使用 WebSphere Application Server Community Edition 时遇到挂起或性能不佳,并且服务器作为操作系统运行时服务,服务器进程的相应命令/shell窗口对用户不可用。因此,无法从键盘发送用户信号来触发转储。

解决问题:当JVM进程命令窗口可用时,直接生成转储如下:

窗户: 如果 JVM 设置配置为在用户信号时触发转储,请在命令窗口上按 CRTL+Break 以生成转储。

Linux:如果 JVM 设置被配置为在用户信号时生成转储,请在 shell 窗口上按 CTRL+\

AIX: 如果 JVM 设置配置为在用户信号时生成转储,请在 shell 窗口上按 CTRL+\

注意:为了在用户信号时生成 java 核心转储、系统核心转储、堆转储和快照转储,必须通过 JVM 选项配置转储代理,如下所示:

-Xdump:java+heap+system+snap:events=user

有关如何配置转储代理的更多信息,请访问使用-Xdump

但是,如果 WebSphere Application Server Community Edition 作为操作系统服务运行,则命令窗口可能不可用。在windows上用javaw.exe启动JVM进程时也会出现这种情况。

在上述情况下,用户需要找到JVM进程对应的process-id,并使用操作系统供应商或IBM提供的工具按照以下步骤生成转储文件。

Windows: WinDbg 可以从 Microsoft 开发工具站点下载以生成系统核心转储。在 WinDbg 控制台使用以下命令生成系统核心转储:

dump /f <dumpfile> 

其中 dumpfile 包括目录路径和系统核心转储文件的名称。 确保使用/f 选项而不是/ma/f 生成完整转储,而 /ma 生成迷你转储。 IBM Java SDK 1.5.0/1.6.0 提供的 jextract 工具仅支持完整转储。

适用于 Windows 的 SendSignal 实用程序。为此,必须设置 JVM 以生成有关用户信号的转储。要在用户信号时生成 java 核心转储、堆转储、系统核心转储和快照转储,必须在启动时向 JVM 提供以下选项:

-Xdump:java+heap+system+snap:events=user 

注意:SendSignal 实用程序可用于生成所有类型的转储,而 WinDbg 仅生成系统核心转储。

Linux and AIX:Linux 和 AIX 的信号是SIGQUIT。使用命令发送用户信号来触发各种转储:

kill -3 <PID>  

为此,必须设置 JVM 以根据用户信号生成转储。要在用户信号时生成 java 核心转储、堆转储、系统核心转储和 snap sump,必须在启动时向 JVM 提供以下选项。

-Xdump:java+heap+system+snap:events=user 

注意:必须使用 jextract 工具处理系统核心转储文件,并且必须将输出发送给 IBM 支持。应该使用来自遇到问题的同一 JVM 的 jextract 来处理系统核心转储:

<JAVA_HOME>/jre/bin/jextract <dumpfile>   

其中 dumpfile 是系统核心转储的文件名。

这将生成一个 zip 文件 .zip。 zip 文件需要发送给 IBM 支持。

【讨论】:

【解决方案2】:

如果您正在运行自己的代码,Q&D 方法是引发异常并立即打印其堆栈跟踪。如果没有,分析工具应该有办法捕获在你的 JVM 中运行的线程的快照。 我用过YourKit 并喜欢它,但有free alternatives

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多