如何在Java应用服务器或一般情况下强制或生成JVM核心转储?
可能重复:
我可以强制生成JVM崩溃日志文件吗?
如何在Java应用服务器或一般情况下强制或生成JVM核心转储?
可能重复:
我可以强制生成JVM崩溃日志文件吗?
问题摘要:为了诊断运行在WebSphere应用服务器社区版上的客户端应用程序挂起或性能差的问题,用户需要生成各种转储并将其发送给IBM支持进行诊断。
本技术记录解释了如何在WebSphere应用服务器社区版作为操作系统服务运行时生成所需的转储。本技术记录适用于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应用服务器社区版并且服务器作为操作系统服务运行时,对应的命令/ shell窗口不可供用户使用。因此,用户无法从键盘向服务器进程触发信号以生成转储。
解决方法:当JVM进程命令窗口可用时,生成转储非常简单,如下所示:
Windows:
如果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 进程的相应进程 ID,并使用操作系统供应商提供或 IBM 提供的工具来生成转储文件,按以下步骤进行:
Windows: 可以从 Microsoft Dev 工具网站下载 WinDbg 来生成系统核心转储。在 WinDbg 控制台中使用以下命令来生成系统核心转储:
dump /f <dumpfile>
dumpfile参数包含系统核心转储文件的目录路径和名称。确保使用/f
选项而不是/ma
选项。/f
生成完整的转储文件,而/ma
只生成微型转储文件。只有使用IBM Java SDK 1.5.0/1.6.0提供的jextract工具时支持完整的转储文件。
发送信号工具适用于Windows操作系统。为此,必须设置JVM生成用户信号的转储文件。要在用户信号时生成Java核心转储、堆转储、系统核心转储和快照转储文件,请在JVM启动时提供以下选项:
-Xdump:java+heap+system+snap:events=user
注意:SendSignal实用程序可用于生成所有类型的转储文件,而WinDbg仅生成系统核心转储文件。kill -3 <PID>
为此,必须设置JVM以在用户信号上生成转储。要在用户信号上生成Java核心转储、堆转储、系统核心转储和快照转储,请在启动时向JVM提供以下选项。
-Xdump:java+heap+system+snap:events=user
注意:必须使用jextract工具处理系统核心转储文件,并将输出发送给IBM支持。应使用经历问题的同一JVM中的jextract来处理系统核心转储:
<JAVA_HOME>/jre/bin/jextract <dumpfile>
dumpfile 是系统核心转储文件的文件名。
这将生成一个 zip 文件 .zip。zip 文件需要发送给 IBM 支持团队。