问题(摘要):为了诊断与在 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 支持。