Use this page as a general overview of monitoring, data
collection, and counters using Performance Monitoring Infrastructure
(PMI) and Tivoli Performance Viewer (TPV).
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 servers. 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 WebSphere
Application Server 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.
- 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 WebSphere Application Server 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 figure above, 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, you can then disable the Avg Method RT counter even when
the rest of the module counters are enabled. You 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, WebSphere Application Server
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 you 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, WebSphere Application Server,
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. You can select the Use sequential counter updates check
box in the administrative console to enable synchronized updates.
The synchronizedUpdate parameter is the equivalent to the Max level
in V5.0.x and V5.1x.
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 Java 2 Platform, Enterprise Edition (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.
- 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. This
category is available at the node level.
- Workload Management (WLM)
- 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.
You can access PMI data through the getStatsObject
and the getStatsArray method in the PerfMBean. You need to pass the
MBean ObjectName(s) to the PerfMBean.
Use the following MBean
types to get PMI data in the related categories:
- DynaCache: dynamic cache PMI data
- EJBModule*: Enterprise JavaBeans (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, you 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
- 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. You 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 you 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 you get multiple ObjectNames, you
can construct an array of ObjectNames that you are interested in.
Then you can pass the ObjectNames to PerfMBean to get PMI data. You
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 your own monitoring applications.