我正在尝试使用 hprof over IBM 堆栈(AIX / Linux 上的 J9 JVM)来分析 WebSphere。具体来说,我对 hprof 输出的 CPU 样本感兴趣,特别是启动时间(从 WS 启动到“准备好运行”)。
问题是,我无法在 hprof 结果文件中获得 CPU 样本输出。
我正在使用以下 JVM 参数来配置 hprof: -Xrunhprof:cpu=samples,file=path-to-hprof.txt
,用于以 ASCII 格式转储 hprof 输出。根据生成的 hprof 输出,CPU SAMPLES
仅在程序退出时生成输出:
HEAP DUMP、SITES、CPU SAMPLES|TIME 和 MONITOR DUMP|TIME 记录在程序退出时生成。
因此,为了在 WebSphere 成功启动后优雅地关闭它,我正在使用stopServer.sh
脚本,并期望 CPU SAMPLES 输出在关闭完成后出现在结果java.hprof.txt
文件中,但事实并非如此。
我究竟做错了什么?是否有更好的方法将 hprof 与 WebSphere 一起使用并生成 CPU 分析输出?任何帮助都感激不尽!
编辑:我在 RHEL 7.5 上通过 IBM J9 VM(内部版本 2.6,JRE 1.6.0 20150619_253846)运行 WebSphere 版本 8.0.0.11。
PS:我还寻找了一种从管理控制台 GUI 关闭 WS 的方法,但找不到任何方法。
PPS:与此同时,我正在使用带有选项的非常好的jvmtop工具--profile <pid>
,但这仅提供部分洞察力,并且与 hprof 不同,必须即时附加,因此执行的某些部分丢失了。