Java Performance Tuning

Java(TM) - see bottom of page

|home |services |training |newsletter |tuning tips |tool reports |articles |resources |about us |site map |contact us |
Tools: | GC log analysers| Multi-tenancy tools| Books| SizeOf| Thread analysers| Heap dump analysers|

Our valued sponsors who help make this site possible
JProfiler: Get rid of your performance problems and memory leaks! 

Training online: Concurrency, Threading, GC, Advanced Java and more ... 

Application Performance Management (APM)

Get rid of your performance problems and memory leaks!

Modern Garbage Collection Tuning
Shows tuning flow chart for GC tuning

Java Performance Training Courses
COURSES AVAILABLE NOW. We can provide training courses to handle all your Java performance needs

Java Performance Tuning, 2nd ed
The classic and most comprehensive book on tuning Java

Java Performance Tuning Newsletter
Your source of Java performance news. Subscribe now!
Enter email:

Training online
Threading Essentials course

Get rid of your performance problems and memory leaks!

Java Application Performance Management (APM) is about managing the performance of your Java application. Here Jack Shirazi covers the basics including examples, tools and the market.
Published July 2004, Author Jack Shirazi

Page 1 of 2
next page: The market, the tools, and the vendors

Application Performance Management (APM) is pretty much exactly what is says: managing the performance of your Java application. An increasing number of tools are targeted at this fast growing sector of the I.T. market, and for Java applications we now have a wealth of choices for managing performance in the development, testing, deployment and production stages of an application. Analysis and design stages are not so well supported in terms of performance management: in fact support for these stages are limited to the practice of software performance engineering, high performance design patterns, and our own courses such as our Architecting & Designing for Performance course.

Okay, so what about the APM tools that are available? What do you use them for and when and how are they used? Let's have a look at a J2EE APM tool in use.


It's Wedneday afternoon. Joe Operator, the administrator of the company's business critical WeWalkYourDog application, has just come back from lunch. Joe logs back in to his terminal and checks through his email to see what has come through while he had his lunch. There is the usual list of pending items and a smattering of office gossip. One email stands out. It has a "high" priority status and a subject line indicating it holds a warning generated from the JFantasticAPM monitor.

Joe opens the email, and sees that it contains a warning about a potential performance problem on the WeWalkYourDog J2EE business server. The embedded hyperlink gives him a shortcut to open the JFantasticAPM console, which in turn contains a message dominating the panel:

1. WARNING: Probable severe degradation in server response time in 47 hours, affecting all business transactions.
2. SYMPTOMS: Gradual decrease in database query response times.
3. LIKELY CAUSE (98%): Gradual depletion of resources in JDBC connector pool, identified from regular comparison of
3A. ---- Direct access to the database using JFantasticAPM STANDARDX2 SQL query
3B. ---- JDBC connector pool connection access to the database using STANDARDX2 SQL query
4A. ---- Gradual termination and restart of connector pool elements:
4A. =======> impact on server expected to be negligible if phased over 29.6 hour period
4B. ---- Lowering of connector pool time-to-live value to 22.3:
4B. =======> impact on server expected to be negligible if new value set to 22.3
5A. Proceed on auto-cycling of connector pool elements over <29.6> hour period
5B. Proceed on lowering of connector pool time-to-live value to <22.3>

Confident in the capabilities of JFantasticAPM, Joe goes ahead with both suggestions, clicking both the "proceed" buttons. Over the next two days, the JFantasticAPM console continuously displays the connector pool turnover in a sub-panel, giving realtime indications of the live pool elements in use, those that are "old" connections which have not been re-started, and those that are "new" connections that have been automatically re-started by JFantasticAPM. But more importantly, the average database query times are also displayed, both compared to historical values and for comparisons of a pool element connection against the JFantasticAPM connection. These gradually creep back until, after the 30 hour period, they are back to normal speeds.

Just A Dream?

Unfortunately, the JFantasticAPM tool described above doesn't (yet) exist. Which is a shame, especially as a recent Wily survey found that 86% of web service and consumer website downtime was blamed on faulty connections to and from the Java application. But if it doesn't exist in this form, how close are we and how likely is this dream scenario to come true? And what about the other aspects of the application? The scenario we just described looked only at J2EE monitoring on the server side, but there many other components to APM. So let's be a little more systematic, and start with the types of tools available.

The Java APM Tool Range

Diagram of generic 3-tier application split into zones described in following text

Java APM tools cover the performance of the entire distributed application. This includes

  1. Tools which simulate client activity and measure response times (load testers);
    Tools which sample performance of live systems from the client perspective (service level management tools);
    Client system monitoring tools
  2. Network monitoring tools
  3. Tools which monitor request service times and machine availability
  4. Operating system level and application processing monitoring tools which can have multiple capabilities:
  5. The capability to monitor an individual machine and a single JVM (Java Virtual Machine), from the bytecode processing level (profilers) up through to transaction processing (J2EE monitors) including identifying contention conflicts
  6. Cluster monitoring; availability monitoring; mutliple JVM monitoring; internal and external connection monitoring; component lifetime and business transaction monitoring
  7. Database performance management
  8. Operator console access for both real-time and and recorded data;
    Analysis tools to identify problems;
    The ability to interact with the application to alter configuration settings and other values in order to resolve performance problems

Hopefully, it is becoming clearer now that APM is about measuring the performance of an application at any stage of the application lifecycle and in any part of the application, identifying performance related problems that the application may have, resolving those problems, and controlling the application and measurement tools so that the available resources are configured to reach target service levels.

No one vendor has an end-to-end solution that covers all the aspects of Java APM or all the tools required for an enterprise APM solution. But the higher-end vendors have been aiming to present an integrated solution as a strategic company goal, hence the flurry of takeovers in the last few years: Borland acquired OptimizeIt, Quest acquired Sitraka, Veritas acquired Precise, Mercury acquired Performant, IBM acquired Candle and Cyanea, ASG acquired Dirig, and indeed there may be more acquisitions in the Java APM space that I can't immediately remember. In all cases, these were strategic acquisitions intended to expand the coverage of the acquirer so that they could provide a Java APM solution

Page 1 of 2
next page: The market, the tools, and the vendors

Last Updated: 2024-03-29
Copyright © 2000-2024 All Rights Reserved.
All trademarks and registered trademarks appearing on are the property of their respective owners.
Java is a trademark or registered trademark of Oracle Corporation in the United States and other countries. is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.
RSS Feed:
Trouble with this page? Please contact us