应用程序剖析 (profiling) 是一种分析技术,用于收集运行时数据和检测应用程序问题,比如内存泄露、性能瓶颈、过量对象创建和超过系统资源限制。Rational® Application Developer Version 7.5 是一个企业应用程序集成开发环境 (IDE),在开发最终部署在 WebSphere® Application Server 上的大型应用程序中是很受欢迎的一种选择。Rational Application Developer 允许您分析 Java™ 应用程序,以深入了解应用程序的性能和内存特征。
可以在应用程序上使用的两种分析器:
- Java Profiler:这是一个基于标准的 Java 应用程序分析器,被紧密集成到 Eclipse 开发工作流中。Java Profiling Agent 提供关于独立应用程序或应用程序服务器上运行的应用程序的运行时行为的详细信息。它是一个代理实例,与 Agent Controller 部署在一起。
- J2EE Request Profiler:这是应用程序服务器进程中驻留的一个代理,其目的是收集来自电子商务应用程序请求的拦截点的数据。它使用 Agent Controller 来外化这些数据,以便数据能通过工作台的 Profiling and Logging 透视图所提供的各种视图来呈现。J2EE Request Profiler 提供有关高级应用程序的数据。
如果能深入了解应用程序的运行时行为,就能更好地理解应用程序的资源需求和运行时可能出现的潜在瓶颈。分析器能够协助确定问题,并对需要调优的参数提供有用的见解以提高应用程序性能。
本文主要面向开发人员、性能调优专家和顾问。本文介绍如何使用 Rational Application Developer Version 7.5 的剖析功能对 WebSphere Application Server Version 8.0 上运行的应用程序进行剖析。配置一个外部 Application Server 实例和 Rational Application 分析器的步骤不同于将应用程序与 Rational Application Developer 集成时所需的步骤。
本文假定存在以下先决条件:
- 您必须对 Rational Application Developer 有深入的了解并使用它作为开发工具。
- 您需要对 Application Server 环境和创建配置文件有深入了解。
- 您需要拥有配置 Application Server 和执行管理任务的实践经验。
系统需求如下:
- Microsoft® Windows®
- Rational Application Developer Version 7.5(IBM Rational Agent Controller 已包含在 Application Developer 安装映像中,因此不需要单独安装)
- WebSphere Application Server Version 8.0 ND 和一个 Cell 配置文件(Dmgr01 和 AppSrv01 已与其联合)
如图 1 所示,Rational Application Developer 可以在 WebSphere Application Server 上另一台机器上运行,也可以在同一台机器上运行。本文将介绍当目标 WebSphere 应用程序服务器实例位于本地或远程机器上时(不是与 Rational Application Developer 集成的 WebSphere 测试环境)如何连接并运行剖析。
针对应用程序分析的机器设置
下列目录用作组件的安装路径。
- Agent Controller 根:
C:\IBM\SDP_1\AgentController - Application Server 根:
C:\IBM\WebSphere\AppServer - Rational Application Developer 根:
C:\IBM\SDP
启动 Application Server 和 Rational Application Developer 之前,必须在运行目标应用程序的机器上设置某些环境变量。
- 编辑
C:\IBM\WebSphere\AppServer\profiles\AppSrv01\bin下的SetupCmdLine.bat文件,将清单 1 中的语句添加到该文件末尾。
设置环境变量
SET TPTP_AC_HOME=C:\IBM\SDP_1\AgentController SET JAVA_PROFILER_HOME=%TPTP_AC_HOME%\plugins\org.eclipse.tptp.javaprofiler SET PROBEKIT_HOME= \ C:\IBM\SDPShared\plugins\org.eclipse.hyades.probekit_4.2.400.v200809010100\os\win32\x86 SET BOOT_LOADER= C:\IBM\SDPShared\plugins\ org.eclipse.tptp.platform.jvmti.runtime_4.4.200.v200809010100\agent_files\win_ia32 SET LD_LIBRARY_PATH= \ %TPTP_AC_HOME%\bin;%TPTP_AC_HOME%\lib;%PROBEKIT_HOME%;%LD_LIBRARY_PATH%;%BOOT_LOADER% SET PATH= \ %TPTP_AC_HOME%\bin;%TPTP_AC_HOME%\lib;%PROBEKIT_HOME%;%JAVA_PROFILER_HOME%;%PATH% |
- 保存并关闭
SetupCmdLine.bat文件。
配置 WebSphere Application Server
您需要配置 Application Server,以便 Application Developer Profiler 能够连接到它。
- 启动 Deployment Manager。打开一个命令提示并导航到
C:\IBM\WebSphere\AppServer\profiles\Dmgr01\bin( 其中 Dmgr01 是我们示例中的部署管理器配置文件)。输入命令startManager.bat。
启动部署管理器
- 启动节点代理。导航到
C:\IBM\WebSphere\AppServer\profiles\AppSrv01\bin(其中 AppSrv01 是我们示例中的节点)。输入命令startNode.bat。
启动节点管理器
- 导航到
C:\IBM\WebSphere\AppServer\profiles\AppSrv01\bin并输入命令stopServer.bat server1,停止 AppSrv01。 - 在 Application Server 机器上打开一个浏览器并导航到以下地址,启动 Dmgr01 的管理控制台:
http://localhost:9060/ibm/console。 应用程序服务器时启动时必须启用剖析功能。在 Administrative Console 中,导航到 Servers > Server Types > WebSphere application servers > server1> Java and Process Management > Process definition > Java Virtual Machine。
要使用 Java Profiling Agent 进行剖析,在 Generic JVM 参数字段中输入以下内容:
-agentlib:JPIBootLoader=JPIAgent:server=controlled;CGProf。请参见 通用 JVM 参数 了解更多相关信息。
启用 Java 剖析代理
要使用 J2EE Request Profiler 进行剖析,输入
-DPD_DT_ENABLED=true。
启用 J2EE Request Profiler
单击 OK 并保存配置更改。- 启动 server1。打开一个命令提示并导航到
C:\IBM\WebSphere\AppServer\profiles\AppSrv01\bin。输入命令startServer.bat server1。
启动应用程序服务器
如果 Generic JVM arguments 字段设置为启用 Java Profiling Agent,那么服务器启动后似乎被挂起(参见 图 6),这是因为在这种 “controlled” 分析模式下,它正在等待来自 Rational Application Developer 的信号。
在 Rational Application Developer 中配置分析器
下一步是配置 Rational Application Developer 分析程序。在安装 Rational Application Developer 的机器上执行这些步骤。
配置和启动 Agent Controller。
- 打开一个命令提示并导航到
C:\IBM\SDP_1\AgentController\bin。运行SetConfig.bat脚本,为 Agent Controller 生成配置文件。 - Agent Controller 可以作为应用程序或 Windows Service 启动。要作为应用程序启动,从
C:\IBM\SDP_1\AgentController\bin目录中输入命令ACServer.exe。
- 打开一个命令提示并导航到
- 启动 Rational Application Developer。在命令窗口中,导航到
C:\IBM\SDP并输入命令eclipse.exe。 -
程序启动后,切换到 Profiling Perspective。 要打开这个透视图:
- 单击 Window > Open Perspective > Other...
- 选择列表中的 Profiling and Logging,单击 OK。
Profiling and Logging 透视图
-
连接到服务器实例的一个远程 Java 进程:
- 选择 Run > Profile Configurations...。在配置窗口中,双击 Attach to Agent,然后单击 New_configuration。
- 输入配置名称。
- 在 Host 选项卡上的 Default Hosts 部分,选择本地主机的地址,例如
localhost[10002]。如果您正在配置远程服务器,那么输入远程机器的主机名或 IP 地址。单击 OK。 - 单击 Test Connection,验证通信是否能工作。如果连接失败,检查 Agent Controller 是否正在使用默认端口运行。
测试连接
- 下面选择 Agents 选项卡。如果您此前已将 JVM 参数设置为启用 Java Profiling Agent,那么Java Profiling Agent (RE 1.5 或更新版本)应该会列在该选项卡中。展开代理树,找到 Execution Time Analysis。选中这两个代理。
使用 Java Profiler 进行剖析
如果您此前已将 JVM 参数设置为启用 J2EE Request Profiler,那么选项卡中会列出 J2EE Request Profiler。选中列示的代理。
使用 J2EE Request Profiler 进行剖析
- 选择 Common 和 Destination 选项卡,查看其他配置选项,比如指定和分析项目。您可以根据需要修改这两个选项卡上的值,但在本示例中不需要额外配置。
切换回 Agents 选项卡并单击 Profile。
- 监控开始后,就可以开始分析应用程序了。Profiling Monitor 选项卡中的 sever1 的 Process ID (PID) 如 图 11 和 图 12 所示。
执行时间分析 - Java Profiling
J2EE Request Profiler
配置好 Profiler 后,就可以通过 URL
http://localhost:9080/< application_name
> 访问需要剖析的应用程序。可以在 Rational Application Developer 中剖析数据,以便采集和分析数据。
Java Profiler 视图。要打开一个新视图,右键单击 <monitoring....collecting> Profiling (date) > Open With。可以选择以下几个选项:
- 执行时间分析 (Execution Time Analysis)
- 内在统计 (Memory Statistics)
- 线程统计 (Thread Statistics)
Java Profiler 视图
图 14 展示了一个样例应用程序的执行统计数据。
样例执行统计数据
J2EE Request Profiler 视图。要打开一个新视图,右键单击 <monitoring....collecting> J2EE Request Profiler (date) - > Open With。可以选择几个选项,例如 UML2 Object Interactions、UML2 Class Interactions 和 UML2 Thread Interactions。
要在 Profiling Perspective 中显示采集的数据,右键单击 Profiling Monitor 视图并选择 Refresh Views。这将更新所有视图的数据。数据显示后,必须要再次刷才能显示新采集的数据。
J2EE Request Profiler
图 16 显示了一个样例应用程序的内存统计数据。
样例内存统计数据
可以在下面的适当模式中找到关于这些视图的更多信息。这 4 个级别是:
- 包
- 类
- 方法
- 实例
可以通过选择适当的工具栏控件在包、类、方法和实例模式之间切换。
学习
-
WebSphere Application Server V8 Information Center:包含关于应用程序剖析的更多信息。
- 参见 Rational Application Developer V7.5 Information Center,查看关于使用 Rational Application Developer 进行分析的更多讨论。
- 红皮书 Rational
Rational Application Developer V7.5 Programming Guide 中的第 27 章提供了一个分析示例。
-
developerWorks BPM 专区:获取关于 IBM BPM 解决方案的最新技术资源,包括下载、演示、文章、教程、活动、网络广播等。
-
IBM developerWorks 中国 WebSphere 专区:为使用 WebSphere 产品的开发人员准备的技术信息和资料。这里提供产品下载、how-to 信息、支持资源以及免费技术库,包含 2000 多份技术文章、教程、最佳实践、IBM Redbook 和在线产品手册。
获得产品和技术
- 最受欢迎的 WebSphere 试用软件下载:下载关键 WebSphere 产品的免费试用版。
- IBM developerWorks 软件下载资源中心:IBM deveperWorks 最新的软件下载。
- IBM developerWorks 工具包:下载关键 WebSphere 最新的产品工具包。
讨论
- 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
- 加入 IBM 软件下载与技术交流群组,参与在线交流。
