PMI data organization
Use this page as a general overview of monitoring, data collection, and counters using Performance Monitoring Infrastructure (PMI) and Tivoli Performance Viewer.
Performance Monitoring Infrastructure (PMI) provides server-side monitoring and a client-side API to retrieve performance data. PMI maintains statistical data within the entire WebSphere Application Server domain, including multiple nodes and servers. Each node can contain one or more WAS. Each server organizes PMI data into modules and submodules.
Tivoli Performance Viewer, formerly Resource Analyzer, organizes performance data in a centralized hierarchy of the following objects:
- Node. A node represents a physical machine in the WAS administrative domain.
- Server. A server is a functional unit that provides services to clients over a network. No performance data is collected for the server itself.
- Module.
(Dist) A module represents one of the resource categories for which collected data is reported to the performance viewer. Each module has at least one configuration file in XML format. These files determine organization and lists a unique identifier for each performance data in the module. Modules include enterprise beans, JDBC connection pools, J2C connection pool, JVM run time (including Java Virtual Machine Tool Interface (JVMTI)), servlet session manager, thread pools, transaction manager, web applications, Object Request Broker (ORB), Workload Management (WLM), web services gateway (WSGW), and dynamic cache.
(ZOS) A module represents one of the resource categories for which collected data is reported to the performance viewer. Each module has a configuration file in XML format. This file determines organization and lists a unique identifier for each performance data in the module. Modules include enterprise beans, JDBC connection pools, J2C connection pool, JVM run time (including Java Virtual Machine Tool Interface (JVMTI)), servlet session manager, transaction manager, web applications, Object Request Broker (ORB), and dynamic cache.
- Submodule. A submodule represents a fine granularity of a resource category under the module. For example, ORB thread pool is a submodule of the thread pool category. Submodules can contain other submodules.
- Counter. A counter is a data type used to hold performance information for analysis. Each resource category (module) has an associated set of counters. The data points within a module are queried and distinguished by the MBean ObjectNames or PerfDescriptors. Examples of counters include the number of active enterprise beans, the time spent responding to a servlet request and the number of kilobytes of available memory.
Tivoli Performance Viewer is a thin client integrated into the WAS administrative console. It provides a simple viewer for the performance data provided by Performance Monitoring Infrastructure (PMI), and allows users to view and manipulate the data for counters. A particular counter type can appear in several modules. For example, both the servlet and enterprise bean modules have a response time counter. In addition, a counter type can have multiple instances within a module. In the previous figure, both the Enterprise beans module and Bean1 have an Avg Method RT counter.
Counters are enabled at the module level and can be enabled or disabled for elements within the module. For example, in the figure, if the enterprise beans module is enabled, its Avg Method RT counter is enabled by default. However, we can then disable the Avg Method RT counter even when the rest of the module counters are enabled. We can also, if desired, disable the Avg Method RT counter for Bean1, but the aggregate response time reported for the whole module no longer includes Bean1 data.
As part of a fine-grained control feature, WAS provides statistic sets which are pre-defined, fixed server-side sets, based on the PMI statistic usage scenarios. The PMI specification levels include: none, basic, extended, all, or custom. If we choose none, all PMI modules are disabled. Choosing basic provides the J2EE and the essential set of statistics to give you a basic level of monitoring. Selecting extended gives you the basic level of monitoring plus Work Load Monitor, Performance Advisor, and Tivoli resource models for a more robust monitoring set. Choosing all enables all statistics. Choosing custom gives you fine-grained control to enable or disable statistics individually.
There are only two states for a statistic: enabled or disabled. To provide an option to enable synchronized updates, WAS, provides a configuration parameter, synchronizedUpdate, at the PMI service level. When this attribute is true, all the statistic updates are synchronized. By default, the synchronizedUpdate parameter is set to false. We can select the Use sequential counter updates check box in the administrative console to enable synchronized updates.
Data collection can affect performance of the application server. The impact depends on the number of counters enabled, the type of counters enabled and the monitoring level set for the counters.
The following PMI modules are available to provide statistical data:
- Enterprise bean module, enterprise bean, methods in a bean
- Data counters for this category report load values, response times, and life cycle activities for enterprise beans. Examples include the average number of active beans and the number of times bean data is loaded or written to the database. Information is provided for enterprise bean methods and the remote interfaces used by an enterprise bean. Examples include the number of times a method is called and the average response time for the method. In addition, the Tivoli Performance Viewer reports information on the size and use of a bean objects cache or enterprise bean object pool. Examples include the number of calls attempting to retrieve an object from a pool and the number of times an object is found available in the pool.
- JDBC connection pools
- Data counters for this category contain usage information about the JDBC connection pools for a database. Examples include the number of managed connections or physical connections and the total number of connections or connection handles.
- Java 2 Connector (J2C) connection pool
- Data counters for this category contain usage information about the J2EE Connector architecture that enables enterprise beans to connect and interact with procedural back-end systems, such as Customer Information Control System (CICS ), and Information Management System (IMS™). Examples include the number of managed connections or physical connections and the total number of connections or connection handles.
- Java virtual machine API (JVM)
- Data counters for this category contain memory used by a process as reported by JVM run time. Examples are the total memory available and the amount of free memory for the JVM. JVM run time also includes data from the JVMTI. This data provides detailed information about the JVM running the application server.
- Servlet session manager
- Data counters for this category contain usage information for HTTP sessions. Examples include the total number of accessed sessions, the average amount of time it takes for a session to perform a request, and the average number of concurrently active HTTP sessions.
- Thread pool
- Data counters for this category contain information about the thread pools for Object Request Broker (ORB) threads and the web container pools used to process HTTP requests. Examples include the number of threads created and destroyed, the maximum number of pooled threads allowed, and the average number of active threads in the pool.
- Java Transaction API (JTA)
- Data counters for this category contain performance information for the transaction manager. Examples include the average number of active transactions, the average duration of transactions, and the average number of methods per transaction.
- Web applications, servlet
- Data counters for this category contain information for the selected server. Examples include the number of loaded servlets, the average response time for completed requests, and the number of requests for the servlet.
- Object Request Broker (ORB)
- Data counters for this category contain information for the ORB. Examples include the object reference lookup time, the total number of requests, and the processing time for each interceptor.
- OSGi Applications
- Data counters for this category contain information for services and for bundle methods. Examples include the number of service or bundle method invocations, and the average response time of the service or bundle method.
- Web services gateway (WSGW)
- Data counters for this category contain information for WSGW. Examples include the number of synchronous and asynchronous requests and responses.
- System data
- Data counters for this category contain information for a machine (node). Examples include the CPU utilization and memory usage. Note that this category is available at the node level, which means it is only available for the node agent if we are running multiple servers.
- (iSeries) (Dist) Workload Management (WLM)
- (iSeries) (Dist) Data counters for this category contain information for workload management. Examples include the number of requests, the number of updates and average response time.
- Dynamic cache
- Data counters for this category contain information for the dynamic cache service. Examples include in-memory cache size, the number of invalidations, and the number of hits and misses.
- Web services
- Data counters for this category contain information for the Web services. Examples include the number of loaded web services, the number of requests delivered and processed, the request response time, and the average size of requests.
- Alarm manager
- Data counters for this category contain information for the Alarm Manager.
- Object pool
- Data counters for this category contain information for Object Pools.
- Scheduler
- Data counters for this category contain information for the Scheduler service.
We can access PMI data through the getStatsObject and the getStatsArray method in the PerfMBean. We need to pass the Bean ObjectName(s) to the PerfMBean.
Use the following MBean types to get PMI data in the related categories:
DynaCache dynamic cache PMI data EJBModule* EJB module PMI data (BeanModule) EntityBean* specific EJB PMI data (BeanModule) JDBCProvider* JDBC connection pool PMI data J2CResourceAdapter* Java 2 Connectivity (J2C) connection pool PMI data JVM Java virtual machine PMI data MessageDrivenBean* specific EJB PMI data (BeanModule) ORB Object Request Broker PMI data Server PMI data in the whole server, we must pass recursive=true to PerfMBean SessionManager* HTTP Sessions PMI data StatefulSessionBean* specific EJB PMI data (BeanModule) StatelessSessionBean* specific EJB PMI data (BeanModule) SystemMetrics system level PMI data ThreadPool* thread pool PMI data TransactionService JTA Transaction PMI data WebModule* Web application PMI data Servlet* servlet PMI data (iSeries) WLMAppServer Workload Management PMI data WebServicesService Web services PMI data WSGW* Web services gateway PMI data
To use the AdminClient API to query the MBean ObjectName for each MBean type. We can either query all the MBeans and then match the MBean type or use the query String for the type only: String query = "WebSphere:type=mytype,node=mynode,server=myserver,*";
Set the mytype, mynode, and myserver values accordingly. You get a Set value when you call the AdminClient class to query MBean ObjectNames. This response means that we can get multiple ObjectNames.
In the previous example, the MBean types with a star (*) mean that there can be multiple ObjectNames in a server for the same MBean type. In this case, the ObjectNames can be identified by both type and name (but mbeanIdentifier is the real UID for MBeans). However, the MBean names are not predefined. They are decided at run time based on the applications and resources. When we get multiple ObjectNames, we can construct an array of ObjectNames that we are interested in. Then we can pass the ObjectNames to PerfMBean to get PMI data. We have the recursive and non-recursive options. The recursive option returns Stats and sub-stats objects in a tree structure while the non-recursive option returns a Stats object for that MBean only. More programming information can be found in Developing our own monitoring applications.
Monitor overall system health Enable PMI Performance Monitoring Infrastructure settings OSGi Applications PMI counters