分析 Java CPU 负载

Posted

技术标签:

【中文标题】分析 Java CPU 负载【英文标题】:Profile Java CPU load 【发布时间】:2011-11-29 14:58:31 【问题描述】:

我需要分析一个商业 Java 应用程序的 CPU 负载,我没有该应用程序的源代码。

我可以看到应用程序受 CPU 限制,但我如何了解 CPU 是否忙于执行 FP 操作、整数操作或其他操作?

如果我能找到一个典型的负载,我可以使用一些开源基准测试工具来模拟不同硬件平台上的负载,以了解哪个 CPU 为我提供了最佳价值,这是我的最终目标。

【问题讨论】:

您可以使用 jprobe/jprofiler 之类的工具进行内省 - 这将显示正在调用哪些方法/操作以及哪些内容占用了时间和内存。虽然它们本身可能不做 CPU,但您肯定可以为此目的查看 sar/top/mpstat(即,无论 CPU 跳到哪里,拍摄快照)? 【参考方案1】:

如果您使用的是 JDK 1.6.x,我强烈推荐 jvisualvm,它是 $JAVA_HOME/bin 中的可执行文件。

这将帮助您确定您的 CPU 瓶颈,但如果您没有来源,您解决潜在问题的能力将受到限制。

【讨论】:

您需要下载 JDK(不是 JRE)或 jvisualvm 的独立版本。它可以附加到正在运行的程序!需要 Oracle JVM。【参考方案2】:

JProfiler 程序(商业软件)http://www.ej-technologies.com/products/jprofiler/overview.html 对我很有帮助。 (2-3年前。但是软件应该还是不错的:))

【讨论】:

【参考方案3】:

我一直在使用 dynaTrace 产品版,它对我帮助很大。低开销,对 CPU 和内存瓶颈的高度可见性。

我推荐 dynaTrace。

【讨论】:

以上是关于分析 Java CPU 负载的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统之运行状态分析及问题排查思路

cpu使用率低负载高,原因分析

从cpu负载到jstack分析线程状态

linux 常见的系统分析工具

Linux负载CPU内存磁盘IO网络IO状态分析详解

vmstat查看分析Linux系统负载性能