强制或生成 jvm 核心转储 ( IBM JVM )

2022-09-03 01:58:03

可能的重复:
我可以强制生成JVM崩溃日志文件吗?

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


答案 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+\

艾克斯:如果将 JVM 设置配置为在用户信号处生成转储,请按 shell 窗口。CTRL+\

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

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

有关如何配置转储代理的详细信息,请访问 using 。-Xdump

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

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

窗户:WinDbg可以从Microsoft Dev tools站点下载,以生成系统核心转储。在 WinDbg 控制台上使用以下命令生成系统核心转储:

dump /f <dumpfile> 

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

SendSignal utility for Windows.为此,必须设置 JVM 以在用户信号上生成转储。要在用户信号时生成 java 核心转储、堆转储、系统核心转储和快照转储,必须在启动时向 JVM 提供以下选项:

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

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

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

kill -3 <PID>  

为此,必须设置 JVM 以在用户信号上生成转储。要在用户信号处生成 java 核心转储、堆转储、系统核心转储和快照集水坑,必须在启动时向 JVM 提供以下选项。

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

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

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

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

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


答案 2

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


推荐