IBM的Java诊断,第5部分 - 编程入门网
决于您的 JVM 版本:
对于 Java6 SR5 和以上版本,使用 -Xhealthcenter。 对于 SR1 和以上版本,使用 -agentlib:healthcenter -Xtrace:output=perfmon.out 选项。 对于 Java 5、SR10 和以上版本,使用 -Xhealthcenter。否则,使用 -agentlib:healthcenter - Xtrace:output=perfmon.out。 IBM的Java诊断,第5部分(3)时间:2011-11-02 IBM Toby Corbin如果您不知道自己的 Java 版本号,可以通过运行 java -version 命令将版本号输出到控制台,如图 3 所示。 图 3. 获取 Java 版本号 要确定使用哪个命令选项来启用代理,一个简单的方法是首先尝试 -Xhealthcenter 选项。如果不行 ,再尝试 -agentlib:healthcenter -Xtrace:output=perfmon.out。 如果在您的应用程序启动时,Health Center 代理也成功启动,控制台上将显示一条消息。例如,如 图 4 显示,当我们使用 -Xhealthcenter 选项运行 java -version 时,Health Center 代理在端口 1972 上启动。代理通常监听端口 1972,但如果该端口已被使用(比如另一个 Health Center 代理), 该代理将自动递增端口号。 图 4. 运行 java -version 并启用 Health Center 一旦代理启动,您就可以使用 Health Center 客户端监控您的应用程序并解决各种性能和配置问题。 示例 1:修复一个性能问题 性能优化必须以具体证据为依据。通过检查应用程序代码来识别潜在的性能改进并直接进行修复固然 很容易也很诱人,但是,不成熟的优化可能会降低生产率,甚至很危险。与更慢但更自然的代码相比,优 化后的代码通常更难以维护。而且,进行这些优化也会耗费大量时间。如果性能的确得到改进,那么优化 成本和高度优化的代码所需的额外维护工作仍然是值得的;然而,许多优化并没有取得任何性能改进效果 。优化必须瞄准那些能够产生显著效果的位置。识别优化会在哪些位置产生显著效果的过程也是发现瓶颈 的过程。 分析性能问题 本质上,所有性能问题的根源都是因为资源有限。影响性能的几种基本计算资源是:CPU、内存、I/O 和锁。一个 CPU 关键型应用程序不能得到足够处理器时间来完成既定工作。一个内存关键型应用程序得 不到足够的内存。一个 I/O 关键型应用程序的 I/O 速度无法被系统处理。在一个锁关键型应用程序中, 多个线程在相同的锁上争用。线程之间的同步导致了锁争用。随着这些系统变得越来越并行化,同步成为 一个影响它们的伸缩性的限制因素。 通过识别瓶颈,您可以识别哪个资源是有限的。Health Center 有几个用于检查和诊断低劣的应用程 序性能的工具。性能分析过程是这样的:发现瓶颈、修复瓶颈问题,识别下一个瓶颈、修复瓶颈问题,循 环往复,直至获得满意的性能。Health Center 自动化用于识别有限资源的多种流程。目前,Health Center 不能分析 I/O 使用情况,但它能为 CPU 使用、内存使用和锁使用提供形象化显示和建议。 IBM的Java诊断,第5部分(4)时间:2011-11-02 IBM Toby CorbinHealth Center 的 Status 透视图显示一个带有状态指示器的仪表板,每一个潜在的受限资源都有一 个状态指示器。红色和橙色状态表示应用程序性能可以提高的区域。图 5 显示打开的 Status 透视图: 图 5. Status 透视图 检查垃圾收集 过度的垃圾收集(Garbage Collection,GC)是性能低下的一个普遍原因。GC 是 JVM 用于自动管理 应用程序内存的过程。它的好处 — 就代码安全和简单性而言,甚至经常就性能而言 — 是巨大的。但是 ,垃圾收集器确实占用处理资源,不当的应用程序内存使用模式和配置不当的堆大小都可能会导致垃圾收 集器成为一个重大的性能瓶颈。 Health Center 提供 GC 行为的详细形象化显示和关于 GC 调优的建议。图 6 显示了 Health Cente |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |