【发布时间】:2019-04-14 08:43:16
【问题描述】:
我正在尝试通过 IBM 堆栈(AIX / Linux 上的 J9 JVM)使用 hprof 来分析 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。
P.S.:我还寻找了一种从管理控制台 GUI 关闭 WS 的方法,但找不到任何方法。
PPS:与此同时,我正在使用带有 --profile <pid> 选项的非常好的 jvmtop 工具,但这只能提供部分洞察力,并且与 hprof 不同,必须即时附加,所以有些部分的执行丢失。
【问题讨论】:
-
你能检查一下native_stderr.log和native_stdout.log里有没有东西吗?
-
另外,对于 J9,我推荐使用 IBM Java 附带的采样分析器 Health Center 而不是 HPROF:publib.boulder.ibm.com/httpserv/cookbook/…
-
感谢您的 cmets,@kgibm! native_stderr.log 和 native_stdout.log 中除了标准 WS 输出之外没有弹出任何内容。
-
注意,我主要对控制台分析器感兴趣——也许我应该在我的问题中强调这一点。但我肯定会仔细研究 IBM 健康中心抽样分析器。
-
Roger 那,@kgibm...非常感谢您的帮助!
标签: java jvm websphere hprof j9