|
|
|
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 | |
4. | SUGGESTED ACTIONS: | |
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 | |
5. | OPTIONS: | |
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.
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.
Java APM tools cover the performance of the entire distributed application. This includes
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