Java Application Performance Monitoring
Why Monitor Java Applications?
Java-based applications are powering many business-critical IT services today. Java technology is widely used as the middleware on which the business logic of multi-tier infrastructures resides. Enterprises have a variety of home grown application components running on standard Java application servers such as Oracle WebLogic, IBM WebSphere, SAP Netweaver, Apache Tomcat and JBoss, to name a few.
 |
The Java Virtual Machine is integral to the functioning
of any Java application |
Since it hosts the core business logic, the performance of the middleware tier has a significant impact on the performance of the business services that it supports. Since all Java applications (whether client-server or web-based) run on a Java Virtual Machine, monitoring of the Java Virtual Machine can provide key insights into performance issues that could have a significant impact on the business services that it supports. For example, a single run-away thread in the JVM could take up significant CPU resources, slowing down performance for the entire service. Alternatively, a deadlock between two key threads could bring the business service to a grinding halt!
The eG Java Monitor
 |
Remote monitoring of Java applications using
the eG Java Monitor |
In the earlier days, custom instrumentation had to be developed to look at the internals of the JVM. Newer JVMs (JVM 1.5 or higher) have extensive pre-built instrumentation capabilities that monitoring applications can tap into. The eG Java Monitor is a new set of performance measurements and detailed diagnostics added to the eG universal agent to allow for comprehensive monitoring of Java Applications. Using the Java Management eXtension (JMX) interface of the JVMs, the eG Java Monitor collects a wealth of metrics.
Based on the analysis of these metrics, the eG Java Monitor gives you a comprehensive view of the activities within a JVM:
- It lets you see which threads are running in the JVM and what state they are in (such as runnable, blocked, waiting, timed waiting, deadlocked, or high CPU).
- You also have access to a stack trace for each thread showing class, method, and line of code (to troubleshoot problems down to the line of code level).
- And you can monitor the performance of garbage collection processes, CPU and memory usage, and JVM restarts.
 |
Diagnosing a high CPU problem in a Java application down to the
code level using the eG Java Monitor |
The monitoring can be done in an agent-based or an agentless manner. Adminstrators get to choose which approach works for them. A single agent can monitor all the JVMs running on a system. Licensing for the monitoring solution is by the number of servers monitored and not based on the number of applications monitored.
Metrics regarding the performance of the JVM are collected in real-time and stored in a relational database for later analysis. The historical data and reports are ideal for post-mortem diagnosis and pin-pointing where the root-cause of a problem lies. At the same time, the real-time metrics are analyzed and alerts generated as and when problems occur.
The eG Java Monitor offers a 100% web-based monitoring and reporting interface. Administrators can thus login to a web console to view the real-time status of their critical Java applications. The interface is intuitive, easy to use, and is designed to present a similar look and feel as the jconsole free Java console utility that most Java administrators and developers are familiar with
Questions that the eG Java Monitor Answers
- What is the average CPU utilization of the JVM? Which threads are responsible for the CPU usage and what lines of code is each thread executing?
- How many threads are running in the JVM at any time? Is there any leakage of threads (i.e., are threads being started and left running over time)?
- Are there any deadlocks happening in the JVM? Which threads are responsible for a deadlock and which lines of code (which modules, classes, files) were they executing prior to the deadlock?
- Are there any blocked threads? Which threads are blocking them and which lines of code are responsible for this?
- How efficient is the JVM's garbage collection process? How long does garbage collection take?
- What is the heap usage of the JVM and which object types are responsible for the memory usage of the JVM?
- When was the JVM last restarted? What is the current uptime of the JVM?
Benefits of using the eG Java Monitor
- Real-time alerts pin-point the exact line of code that is impacting the performance of Java applications, thereby facilitating rapid diagnosis and recovery;
- By taking action on eG's proactive alerts, administrators can avoid catastrophic Java application failures in the future;
- Historical reporting correlates Java application performance with that of the other infrastructure tiers, highlighting where the bottlenecks lie;
- Insights into the performance of the JVM help administrators fine-tune the performance of the Java applications to ensure happy users.
Related Performance Management Solutions