权威支持: 切实了解您的 Web 应用程序正在进行的操作

使用 IBM Monitoring and Diagnostic Tools for Java - Health Center

IBM® Monitoring and Diagnostic Tools for Java - Health Center 是一款以最小的性能开销监控 IBM Java 虚拟机的轻量级工具。它提供关于正在加载的类、虚拟机环境、垃圾收集、锁定和分析的实时信息和建议。本文向您介绍 Health Center,并通过一个示例展示如何使用它检查 Web 应用程序中的源代码更改的影响。 本文来自于 IBM WebSphere Developer Technical Journal

Holly Cummins, Cummins, WSO2 Inc

Holly Cummins 是 IBM Java 技术中心的一名性能工具开发人员,她领导 IBM Monitoring and Diagnostic Tools for Java - Health Center 的开发工作,是 GC 和 Memory Visualizer 工具的作者。她曾在一个垃圾收集开发团队担任性能工程师,这为她的工具开发工作提供了坚实的基础。



Helen Beeken, 软件工程师, WSO2 Inc

Helen Beeken 博士是一位工作于 IBM Java 技术中心的软件工程师,正致力于开发 RAS 工具。在加入该团队之前,她效力于开源项目 AspectJ 和 AJDT Eclipse,并帮助针对大型软件系统进行压力测试。



Toby Corbin, 软件工程师, WSO2 Inc

Toby Corbin 是 IBM Java 技术中心的一名软件工程师,目前正在开发 RAS 工具。他于 2001 加入 IBM,四年的时间里一直在开发 Java Runtime Environment 的国际语言支持和全球化,之后的两年从事 Swing 和 AWT 库的开发。



Russell Wright, WebSphere 服务开发人员, WSO2 Inc

Russell Wright 拥有多年开发和支持数据通信和中间件软件的经验,其中包括 WebSphere Application Server。他目前管理 IBM Support Assistant 的故障排除工具的部署,并且是开发 IBM Guided Activity Assistant 的团队的开发人员。


developerWorks 投稿作者

2010 年 2 月 25 日

在每个专栏中,支持权威都将讨论 IBM® Technical Support 为 WebSphere® 产品提供的资源、工具和其他元素,以及一些可以进一步增强您的 IBM 支持体验的技术和新思想。

开始之前

按照惯例,我们首先提供一些关于整个 WebSphere 社区的重要新闻:

  • 您为 IMPACT 2010 做好准备了吗?请尽快注册,以便节省注册和酒店费用。IMPACT 2010 是面向商界和 IT 行业领导的重要会议,将于 5 月 2 日至 7 日在拉斯维加斯召开。赶快加入到我们当中来吧,向全球经验最丰富的商业和技术领袖学习更科学的经营管理方法。
  • 检查这些针对 IBM Support Assistant 的新工具和更新: 参见 Tools Add-ons List,获取 IBM Support Assistant 可用的诊断工具的完整列表。
  • 您试用过 IBM Support Portal 吗?如果还没有,现在是开始使用它的好时机,因为当前的 IBM 软件支持页面将在 2010 年 1 月被 IBM Support Portal 替代。所有 IBM 软件产品现在都包含在 IBM Support Portal 中。请参阅支持权威的 新 IBM Support Portal 简介 了解详细信息。如果您有任何评论和建议,一定要告诉我们,请将您的评论和建议发送到 spe@us.ibm.com
  • 新工具!现在您可以使用 My Notifications 及时获得关于可用修复程序的信息。按照下面的步骤更新您的订阅:
    • 单击 My Notifications 以管理您的订阅。
    • 选择一个产品家族(例如 WebSphere)。
    • 选中一个或多个产品并单击 Continue
    • 选中 Document Types 下的 Fixes 并单击 Submit
    设置好了!现在,如果您选中的产品有可用的修复程序,您将及时收到通知。
  • WebSphere.org 的 Global User Community 正在不断发展!检查下面两个虚拟用户组,您可以在这两个用户组中和来自世界各地的 “WebSphere 用户” 合作。
  • 您平常使用业务流程管理(BPM)产品吗?如果使用,请检查 BPM V7.0 声明
  • 有几个精彩的网络广播计划于 11 月在 WebSphere Technical Exchange 举行。检查该站点了解活动细节并成为一名 Facebook 粉丝。

继续关注 与支持相关的各个网站 以及本专栏,以获得有关我们所碰到的其他工具的新闻。

接下来让我们继续今天的主题……


简介

IBM Monitoring and Diagnostic Tools for Java - Health CenterIBM Java 诊断工具箱 的新成员,它为探测并诊断 Java 应用程序中的性能、功能和稳定性问题提供了一个集成解决方案。

Health Center 能够监控运行在 IBM Java Virtual Machine (JVM) 上的任何应用程序,包括 IBM WebSphere Application Server 和 WebSphere 相关产品;它支持广泛的平台,比如 z/OS®、AIX®、Linux® 和 Windows®。

Health Center 以极低的开销收集广泛的方法摘要,突出显示争用锁,分析垃圾收集和堆使用情况,可视化类加载行为。它还检查可能会导致稳定性和性能问题的命令行选项。Health Center 在 Status 视图(见图 1)中提供视觉呈现、分析和建议,显示一个包含 Health Center 发现的信息和问题的总体视图。

图 1. Status 视图
图 1. Status 视图

如果您使用 WebSphere Application Server 的 Performance Monitoring Infrastructure (PMI) 进行性能调优,您将发现某些信息(如堆使用情况)可以同时通过 PMI 和 Health Center 获得。但是,有一些重要的差别需要引起注意,了解这些差别能够帮助您在不同的时刻选择适当的工具。

Health Center 与 PMI 的区别在于:Health Center 是以 Java 为中心的,因此它不包含高级指标(特定于 Web 应用程序的指标),比如 HTTP 响应时间、servlet 请求数量等。相反,它提供非常详细的 Java 信息,多数这些信息在其他地方不能得到。它还包含方法概要,这在识别性能不佳或多余调用的代码时很有帮助。Health Center 还具有锁分析特性,可用于确定同步瓶颈;一个垃圾收集透视图,可用于确定垃圾收集导致应用程序性能降低的时刻。


安装 Health Center

Health Center 代理使用的 Java 版本最低为 1.5 SR8 或 1.6 SR2。IBM WebSphere Application Server V7.0 默认附带一个支持 Health Center 的 Java 版本,而 WebSphere Application Server V6.1 必须使用一个 SDK 修复程序包至少更新到 Java 1.5 SR8。

使用 Health Center 之前,您必须设置您的系统以便进行监控:

  1. 安装 Health Center 代理和客户端。
  2. 配置 WebSphere Application Server 以支持监控。
  3. 将 Health Center 客户端连接到一个 Java 应用程序。

Health Center 工具包含两个部件:

  • 一个 代理,将信息从受监控的 JVM 发送到客户端。
  • 一个 客户端,连接到代理并显示 Java 应用程序的健康信息。

在监控应用程序前,必须将 Health Center 代理安装到它使用的 JVM 中,并且应用程序必须使用特殊的命令行选项启动。代理默认附带 JVM 版本 1.5 SR9、1.6 SR3 或更新版本。低版本 JVM 可以使用客户端提供的代理升级。

Health Center 客户端是针对 IBM Support Assistant 的一个工具附件。按照 如何安装和运行 IBM Support Assistant 的工具 的指导安装客户端。当安装程序询问您安装或启动哪个工具时,选择 IBM Monitoring and Diagnostic Tools for Java – Health Center

客户端安装好后,您可以从客户端中下载代理并将其安装到要监控的 JVM 中。即使您使用的 JVM 是随 Health Center 代理提供的,也要确保选择最新的代理,因为最新的代理包含最新的更新和缺陷修复程序。为此,单击连接向导的第一个页面上的 Enabling an application for monitoring 链接(见图 2)。IBM Support Assistant 帮助系统打开一个页面,该页面包含指向可下载的 Health Center 代理的链接(见图 3)。

图 2. Health Center 连接向导
图 2. Health Center 连接向导
图 3. Health Center 代理
图 3. Health Center 代理

为您的平台下载适当的代理并将代理解压缩到目标 JVM 的根目录。例如,在一个典型的 Linux 环境中,将代理解压缩到 /opt/ibm/WebSphere/AppServer/java。


配置 WebSphere Application Server 以支持监控

要使 WebSphere Application Server 和您的应用程序支持 Health Center 监控,使用管理控制台来调整 JVM 配置。

  1. 启动管理控制台。
  2. 选择 Servers => Application Servers
  3. 选择要监控的服务器。
  4. 向下滚动到 Sever Infrastructure(见图 4)。
    图 4. 管理控制台:Server Infrastructure
    图 4. 管理控制台:Server Infrastructure
  5. 展开 Java and Process Management
  6. 单击 Process Definition
  7. 在打开的新页面上,切换到 Additional Properties 并单击 Java Virtual Machine(见图 5)。
    图 5. 管理控制台:Additional Properties
    图 5. 管理控制台:Additional Properties
  8. 向下滚动到 Generic JVM arguments 字段并添加以下参数(见图 6):
    -agentlib:healthcenter -Xtrace:output=perfmon.%p.out
    图 6. 向 JVM Arguments 字段添加参数
    图 6. 向 JVM Arguments 字段添加参数
  9. 保存设置并重新启动应用程序服务器。

Health Center 代理将尝试在端口 1972 上监听,如果该端口已被使用,则这个端口号将自动递增。如果 Health Center 客户端和代理之间存在防火墙,则应确保代理监听的端口是打开的。


配置开发环境以支持监控

安装 Health Center 代理并更新您的 WebSphere Application Server 配置之后,现在可以开始监控了。要监控一个应用程序:

  1. 启动 IBM Support Assistant 工作台。
  2. 在 Home 页面上,单击 Analyze Problem 选项卡。
  3. 从 Tools 目录中选择 IBM Monitoring and Diagnostic Tools for Java - Health Center 并单击 Launch 按钮(见图 7)。
    图 7. 启动 Health Center
    图 7. 启动 Health Center
  4. Connection Wizard 打开(见图 8)。单击 Next
    图 8. Connection wizard
    图 8. Connection wizard
  5. 在 JVM Connection Details 面板(见图 9)上,指定要连接的主机名并接受默认端口号。单击 Next 开始搜索 Health Center 代理监听端口。默认情况下,搜索从端口 1972 开始并扫描下面的 100 个端口以便发现所有监听端口。如果您已经知道要连接到的代理的监听端口,可以输入那个端口号并取消选中 Scan next 100 ports for available connections 复选框。如果客户端和代理之间有防火墙,那么确保打开必须的端口。
    图 9. JVM 连接细节
    图 9. JVM 连接细节
  6. 搜索结束后,向导的最终面板显示可用的代理连接(见图 10)。从列表中选择一个端口并单击 Finish 进行连接。
    图 10. 最终的连接向导面板
    图 10. 最终的连接向导面板

您的 WebSphere 应用程序正在做什么?

现在您可以检查您的应用程序正在执行的操作并优化它使其运行得更快。

为了向您展示如何使用 Health Center 来完成这些任务,让我们看一看 Plants By WebSphere 样例 Web 应用程序。跟随我们,了解一个小小的更改是如何对性能造成巨大影响的。

我们对 Plants By WebSphere 应用程序的更改是向 Web 页面添加一小点动态内容,具体来说,是将当前年度添加到页面上显示的每个植物的名称前面。我们没有对支持数据库做任何更改,只是更改了返回植物名称的代码:Inventory.getName()。当前年度通过构建一个 Date 对象(格式为一个字符串)计算,然后使用一个正则表达式来解析年份。图 11 显示了这些更改的结果。

图 11. 更新后的 Plants By WebSphere 应用程序
图 11. 更新后的 Plants By WebSphere 应用程序

现在,让我们使用 Health Center 来查看这些更改的影响:

  • 更改如何影响垃圾收集?

    这些更改对性能有什么影响?要理解这一点,首先需要检查的是垃圾收集。在 Garbage Collection (GC) 透视图中,Health Center 展示了垃圾收集行为的曲线图,GC 统计数据和一些建议(见图 12)。

    图 12. Garbage Collection 透视图
    图 12. Garbage Collection 透视图

    如图 12 中的曲线图所示,GC 暂停不算太长,但似乎的确有不少的 GC 活动。您可以通过查看摘要确认这一点,摘要显示 6.2% 的应用程序时间花费在垃圾收集上。尽管 6.2% 的 GC 开销不算太多,但这个数字比原始应用程序的开销 2.6%(见图 13)大得多。垃圾收集的比率也是原来的 7 倍,因此新应用程序收集的垃圾显著增加。

    图 13. 原始应用程序的垃圾收集摘要表
    图 13. 原始应用程序的垃圾收集摘要表
  • 修改如何影响执行效率?

    下面,检查使用 Date 对象消耗的 CPU 百分比。新应用程序的运行效率高吗?Health Center 的 Profiling 透视图能够帮助回答这个问题。有时,概要由 WebSphere Application Server 代码支配,很难发现您的应用程序代码。要只查看您的代码,您可以使用过滤功能(见图 14)。对更复杂的过滤使用正则表达式(过滤字符串的开头和末尾总是添加一个星号 *,因此没有必要为简单的字符串添加通配符)。本例使用 “plant” 作为过滤器,以便只显示 Plants By WebSphere 方法。

    图 14. 使用 Profiling 透视图中的过滤功能
    图 14. 使用 Profiling 透视图中的过滤功能

    Health Center 的 Profiling 透视图提供一个方法概要,这个方法概要通过对执行代码进行定期采样收集。在本例中(见图 15),Self (%) 列显示 3.2% 的 CPU 时间花费在 Date.toString(),Tree (%) 列显示 Date.toString() 和它调用的所有方法累计花费的 CPU 时间为 40.6%。Date.toString() 占用应用程序的 CPU 使用量的 40% 以上。

    图 15. 方法概要
    图 15. 方法概要

    调用路径视图(图 16)显示哪个代码正在调用 Date.toString(),在本例中,100% 的调用来自更改后的方法 Inventory.getName()。

    图 16. Date.toString() 的调用路径
    图 16. Date.toString() 的调用路径

    显然,将日期格式设置为字符串代价高昂。如果您要提高这里的性能,可以缓存该字符串,而不是为库存中的每个项目重新创建它。这个概要(见图 15)还显示,相当多的时间花费在正则表达式的处理上,因此,您还应该缓存解析结果。更好的方法是使用一种方法来计算日期,比如 Calendar.get(Calendar.YEAR),从而避免创建额外的字符串和正则表达式。

  • 您的同步是如何工作的?

    本例中的这个代码更改没有涉及任何同步,因此也没有产生应用程序的锁定行为问题。因此,在本例中,同步不太可能对性能造成重大影响(见图 17)。

    图 17. Locking 透视图
    图 17. Locking 透视图
  • 您的应用程序正在以什么配置运行?

    Health Center Environment 透视图(见图 18)展示受监控流程的 Java 配置、系统属性和环境变量。这对于确认以下两个问题可能有用:正在被监控的 JVM 是否是将要监控的 JVM;WebSphere 应用程序是否按照原计划的配置运行。

    图 18. Environment 透视图
    图 18. Environment 透视图

结束语

IBM Monitoring and Diagnostic Tools for Java - Health Center 允许您以一种轻量级的方式持续监控 WebSphere Application Server 应用程序的性能和行为,它够难帮助您轻松、准确地识别并诊断性能、配置和同步问题。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere, Java technology
ArticleID=469213
ArticleTitle=权威支持: 切实了解您的 Web 应用程序正在进行的操作
publish-date=02252010