JVM Monitoring and Management Specification
by: Benoy Jose
Introduction:
Application monitoring and profiling are a crucial part of any
software system. Even if careful planning is done during design,
architecture applications need to be monitored and profiled
during QA testing and production to make sure that the
performance of the application is optimal. There are a variety
of third party products like JProbe from Quest software,
Optimizeit from Borland and JPofiler from EJ Technologies which
help in analyzing threads, monitor memory leaks and do other
performance problems. IDEs like web sphere studios have built-in
profiling tools which allow profiling and performance tuning
during development. Most of tools in the market use the
profiling API supplied with Java.
Applications are usually comprised of different third party
products and custom developed components required by the
business. Application monitoring includes checking the overall
health of the whole application and individually monitoring the
performance of the individual components. This requires probes
to be installed at each component to collect data related to
these components. Finally all this data needs to be aggregated
to ascertain the overall condition of the application. This
collection process, though important, needs to be done non-
intrusively so that the application is not affected. The current
JVM specification does not provide any provision to monitor
individual applications running within a JVM. The JSR 174
specification proposes guidelines and recommendations for an API
that can help to monitor JVMs. The specification does not
provide any interfaces to monitor JVMs nor will it define an
abstract layer to do this job. It is primarily focused to define
data that can be used to monitor and manage JVMs and also to
provide guidelines for a native API. The job of providing the
actual implementation will be left out to third party vendors
who create monitoring tools.
Primary Features:
The most important requirements of any monitoring model are listed below.
- It needs to be lightweight and non intrusive and have a
low rate of data.
- The model should not have more than 1% performance overhead.
- The monitoring model should be able to monitor high
frequency events using counters that can be polled at periodic
intervals. The intervals can be designed to make sure that it
does not interfere with the normal functioning of the component,
but in the case of low frequency events such a model would be
counter productive and may miss out actual data. For this kind
of low frequency events synchronous notification events need to
be generated.
- The monitor should provide the facility to do on demand
monitoring by allowing counters and event generators to be
reset, disabled and enabled at runtime.
- The model should not require a restart of the component or
system for monitoring to be enabled, disabled or reset.
- The model should allow for multiple clients to concurrently
use the monitoring model.
- The model should have the ability to detect a low memory
condition in a JVM. This low memory detection should be used to
do application recovery tasks and application memory management
tasks.
- The API should provide a mechanism to detect deadlock and
contentions between threads running in the same JVM.
The API should take care to minimize the "Heisenberg principle"
effect. "Heisenberg Principle," states that by simply managing
the device, you affect the device’s behavior and therefore its
management characteristics.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.