PMI 数据组织
使用此页面作为使用性能监控基础结构 (PMI) 和 Tivoli® Performance Viewer 进行监视、数据收集和计数器的一般概述。
性能监控基础结构 (PMI) 提供服务器端监视和客户端 API 检索性能数据。PMI 保留整个 WebSphere® Application Server 域(包括多个节点和服务器)内的统计数据。每个节点可以包含一个或多个 WebSphere Application Server。每个服务器将 PMI 数据组织到模块和子模块中。

- 节点。节点表示 WebSphere Application Server 管理域中的物理机器。
- 服务器。服务器是在网络上为客户机提供服务的功能部件。不为服务器本身收集性能数据。
- 模块。
模块代表某种资源类别,为其收集的数据会报告给 Performance Viewer。每个模块至少有一个 XML 格式的配置文件。这些文件确定组织并列出模块中每个性能数据的唯一标识。模块包含企业 bean、JDBC 连接池、J2C 连接池、Java™ 虚拟机 (JVM) 运行时(包括 Java 虚拟机工具接口 (JVMTI))、servlet 会话管理器、线程池、事务管理器、Web 应用程序、对象请求代理程序 (ORB)、工作负载管理 (WLM)、Web Service 网关 (WSGW) 以及动态高速缓存。
模块代表某种资源类别,为其收集的数据会报告给 Performance Viewer。每个模块有一个 XML 格式的配置文件。该文件确定组织并列出模块中每个性能数据的唯一标识。模块包含企业 bean、JDBC 连接池、J2C 连接池、Java 虚拟机 (JVM) 运行时(包括 Java 虚拟机工具接口 (JVMTI))、servlet 会话管理器、事务管理器、Web 应用程序、对象请求代理程序 (ORB) 以及动态高速缓存。
- 子模块。子模块代表模块下资源类别的细颗粒度。例如,ORB 线程池是线程池类别的子模块。子模块可以包含其他子模块。
- 计数器。计数器是用于保存分析的性能信息的数据类型。每个资源类别(模块)都有关联的计数器集合。MBean ObjectName 或 PerfDescriptor 查询并分辨模块中的数据点。计数器的示例包括活动的企业 bean 数、响应 servlet 请求所用的时间和可用内存的千字节数。
Tivoli Performance Viewer 是集成到 WebSphere Application Server 管理控制台中的瘦客户机。它为由性能监控基础结构 (PMI) 提供的性能数据提供了简单查看器,并允许用户查看和处理计数器的数据。特定的计数器类型可以在几个模块中出现。例如,servlet 和企业 bean 模块都有响应时间计数器。此外,计数器类型在模块中可以有多个实例。在上图中,企业 bean 模块和 Bean1 都有 Avg Method RT 计数器。
在模块级别上启用计数器,并可以对模块中的元素启用或禁用它。 例如,在上图中,如果启用了企业 bean 模块,那么缺省情况下启用它的 Avg Method RT 计数器。但是,即使当其余模块计数器都已启用,然后您仍可以禁用 Avg Method RT 计数器。如果需要,您还可以对 bean1 禁用 Avg Method RT 计数器,但对整个模块报告的聚集响应时间不再包括 bean1 数据。
作为细颗粒度控制功能部件的一部分,WebSphere Application Server 根据 PMI 统计信息使用方案提供预定义的已修订服务器端的统计信息集。PMI 规范级别包括:无、基本、可扩展、所有或定制。如果选择“无”,那么将禁用所有 PMI 模块。 选择“基本”将提供 J2EE 和必要的统计信息集,以便为您提供基本监视级别。选择“可扩展”将为您提供基本监视级别以及工作负载监视器、性能顾问程序和 Tivoli 资源模型,以提供功能更为强大的监视集合。选择所有将启用所有统计信息。选择定制将给您提供细颗粒度控制以个别启用或禁用统计信息。
统计信息仅有两种状态:已启用或已禁用。为了提供启用同步更新的选项,WebSphere Application Server 提供 PMI 服务级别的配置参数 synchronizedUpdate。当该属性为 true 时,会同步所有统计信息更新。缺省情况下,synchronizedUpdate 参数设置为 false。可以选择管理控制台中的使用顺序计数器更新复选框来启用同步更新。
数据收集可以影响应用程序服务器的性能。该影响取决于启用的计数器数、启用的计数器的类型和为计数器设置的监视级别。

- 企业 bean 模块、企业 bean、Bean 中的方法
- 该类别的数据计数器报告企业 bean 的装入值、响应时间和生命周期活动。示例包括活动 bean 的平均数和将 bean 数据装入或写到数据库的次数。为企业 bean 方法和企业 bean 使用的远程接口提供信息。示例包括调用方法的次数和方法的平均响应时间。另外,Tivoli Performance Viewer 报告关于大小和使用 bean 对象高速缓存或企业 bean 对象池的信息。示例包括尝试从池检索对象的调用次数和在池中找到可用对象的次数。
- JDBC 连接池
- 该类别的数据计数器包含有关数据库的 JDBC 连接池的使用信息。示例包括受管连接数或物理连接数以及连接或连接句柄的总数。
- Java 2 连接器 (J2C) 连接池
- 此类别的数据计数器包含关于 Java 2 Platform, Enterprise Edition (J2EE) 连接器体系结构的使用信息,该连接器体系结构启用企业 bean 来与程序上的后端系统(例如客户信息控制系统 (CICS®) 和信息管理系统 (IMS™))进行连接和互操作。 示例包括受管连接数或物理连接数以及连接或连接句柄的总数。
- Java 虚拟机 API (JVM)
- 该类别的数据计数器包含进程所使用的内存(如 JVM 运行时报告的那样)。示例是总的可用内存量和 Java 虚拟机的可用内存量。Java 虚拟机运行时还包括来自 JVMTI 的数据。该数据提供有关 Java 虚拟机运行应用程序服务器的详细信息。
- servlet 会话管理器
- 该类别的数据计数器包含 HTTP 会话的使用信息。示例包括已访问的会话的总次数、会话执行请求所用时间的平均量和并发活动 HTTP 会话的平均次数。
- 线程池
- 此类别的数据计数器包含有关对象请求代理程序 (ORB) 线程和用于处理 HTTP 请求的 Web 容器池的线程池的信息。示例包括创建和销毁的线程数、允许的最大共享线程数和池中的平均活动线程数。
- Java 事务 API (JTA)
- 该类别的数据计数器包含事务管理器的性能信息。示例包括活动事务的平均数、事务的平均持续时间和每个事务的平均方法数。
- Web 应用程序 servlet
- 该类别的数据计数器包含所选服务器的信息。示例包括装入的 servlet 数、完成请求的平均响应时间和对 servlet 的请求次数。
- 对象请求代理程序 (ORB)
- 该类别的数据计数器包含 ORB 的信息。示例包括对象引用查找时间、总请求次数和每个拦截器的处理时间。
- OSGi 应用程序
- 此类别的数据计数器包含有关服务和有关捆绑软件方法的信息。示例包括服务或捆绑软件方法的调用数,以及服务或捆绑软件方法的平均响应时间。
- Web Service 网关 (WSGW)
- 该类别的数据计数器包含 WSGW 的信息。示例包括同步和异步请求与响应的数量。
- 系统数据
- 该类别的数据计数器包含机器(节点)的信息。示例包括 CPU 利用率和内存使用量。请注意此类别适用于节点级别,就是说如果您正在运行多个服务器,那么它只适用于 Node Agent。
工作负载管理 (WLM)
该类别的数据计数器包含工作负载管理的信息。示例包括请求次数、更新次数和平均响应时间。
- 动态高速缓存
- 该类别的数据计数器包含动态高速缓存服务的信息。示例包括内存中高速缓存大小、无效数和命中和未命中数。
- Web Service
- 该类别的数据计数器包含 Web Service 的信息。示例包括装入的 Web Service 数、传递并处理的请求数、请求响应时间和平均请求大小。
- 警报管理器
- 该类别的数据计数器包含警报管理器的信息。
- 对象池
- 该类别的数据计数器包含对象池的信息。
- 调度程序
- 该类别的数据计数器包含 Scheduler 服务的信息。
您可以通过 PerfMBean 中的 getStatsObject 和 getStatsArray 方法访问 PMI 数据。您需要将 MBean ObjectName 传递到 PerfMBean。
- DynaCache:动态高速缓存 PMI 数据
- EJBModule*:Enterprise JavaBeans (EJB) 模块 PMI 数据 (BeanModule)
- EntityBean*:特定 EJB PMI 数据 (BeanModule)
- JDBCProvider*:JDBC 连接池 PMI 数据
- J2CResourceAdapter*:Java 2 连接器 (J2C) 连接池 PMI 数据
- JVM:Java 虚拟机 PMI 数据
- MessageDrivenBean*:特定 EJB PMI 数据 (BeanModule)
- ORB:对象请求代理程序 PMI 数据
- Server:在整个服务器中的 PMI 数据,您必须将 recursive=true 传递到 PerfMBean
- SessionManager*:HTTP 会话 PMI 数据
- StatefulSessionBean*:特定 EJB PMI 数据 (BeanModule)
- StatelessSessionBean*:特定 EJB PMI 数据 (BeanModule)
- SystemMetrics:系统级别 PMI 数据
- ThreadPool*:线程池 PMI 数据
- TransactionService:JTA 事务 PMI 数据
- WebModule*:Web 应用程序 PMI 数据
- Servlet*:servlet PMI 数据
WLMAppServer:工作负载管理 PMI 数据
- WebServicesService:Web Service PMI 数据
- WSGW*:Web Service 网关 PMI 数据
查询每个 MBean 类型的 MBean ObjectName 要使用 AdminClient API。可以查询所有的 MBean,然后与 MBean 类型匹配,也可以只为该类型使用查询字符串:String query = "WebSphere:type=mytype,node=mynode,server=myserver,*";
相应地设置 mytype、mynode 和 myserver 值。当您调用 AdminClient 类查询 MBean ObjectName 时获取设置的值。该响应意味着您可以获取多个 ObjectName。
在前一个示例中,有星号 (*) 的 MBean 类型意味着服务器中可有多个同一 MBean 类型的 ObjectName。在这种情况下,可以用类型和名称识别 ObjectName(但 mbeanIdentifier 是 MBean 的真实的 UID)。然而,没有预定义 MBean 名。在基于应用程序和资源的运行时上确定 MBean 名。当您获取多个 ObjectName 时,您可以构造您感兴趣的 ObjectName 数组。然后您可以将 ObjectName 传递到 PerfMBean 获取 PMI 数据。您有递归的和非递归的选项。递归选项返回树结构中的 Stats 和 子 Stats对象,而非递归选项仅返回该 MBean 的 Stats 对象。您可以在 开发您自己的监视应用程序中找到更多编程信息。