Skip Headers
Oracle® Enterprise Manager Getting Started with Oracle Fusion Middleware Management
11g Release 1 (11.1.0.1)

Part Number E17558-05
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Index
Index
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
View PDF

12 Introduction to JVM Diagnostics

This chapter provides an overview of JVM Diagnostics. It contains the following sections:

Overview

Mission critical Java applications often suffer from availability and performance problems. Developers and IT administrators spend a lot of time diagnosing the root cause of these problems. Many times, the problems occurring in production environments either cannot be reproduced or may take too long to reproduce in other environments. This can cause severe impact on the business.

Oracle Enterprise Manager Grid Control 11g R1's JVM Diagnostics enables administrators to diagnose performance problems in Java application in the production environment. By eliminating the need to reproduce problems, it reduces the time required to resolve these problems. This improves application availability and performance. Using JVM Diagnostics, administrators will be able identify the root cause of performance problems in the production environment without having to reproduce them in the test or development environment. It does not require complex instrumentation or restarting of the application to get in-depth application details. Application administrators will be able to identify Java problems or Database issues that are causing application downtime without any detailed application knowledge. The key features of JVM Diagnostics are:

Java Activity Monitoring and Diagnostics with Low Overhead

JVM Diagnostics provides in-depth monitoring of Java applications without slowing them down. It helps you to identify the slowest requests, slowest methods, requests waiting on I/O, requests using a lot of CPU cycles, and requests waiting on database calls. It also identifies the end-user requests that have been impacted by resource bottlenecks. Application resources that are causing the performance bottleneck are also visible.

In-depth Visibility of JVM Activity

JVM Diagnostics provides immediate visibility into the Java stack. You can monitor thread states and Java method/line numbers in real time and you can proactively identify issues rather than diagnosing issues like application crashes, memory leaks, and application hangs after they occur.

Real Time Transaction Tracing

If a particular request is hanging or if the entire application is slow, administrators can perform a real-time transaction trace to view current Java application activity. You can see the offending threads and their execution call stacks. You can also analyze various bottleneck resources such as how much time a thread spent in waiting for a database lock. Complex problems such as activity in one thread (or request) affecting the activity in the other thread or rest of the JVM can be found very quickly.

Sometimes the monitoring interval (normally 10 seconds) that is in use is too coarse grained. The Java thread of interest may be too short lived or the amount of monitoring data collected may be insufficient. In such cases, you can run a JVM Trace to get fine-grained details of the JVM activity. This feature allows you to monitor your Java application at a very high frequency (default of once every 50ms) for a short period of time. This allows you to identify interdependency of threads, bottleneck resources (DB, I/O, CPU, Locks, Network) & top methods.

Cross-Tier Correlation with Oracle Databases

JVM Diagnostics facilitates tracing of Java requests to the associated database sessions and vice-versa enabling rapid resolution of problems that span different tiers. It highlights the slowest SQL queries and helps administrators to tune SQL and the database to improve the performance application. This facilitates smooth communication between the database administrators and application administrators by isolating the problems to the database or the application tier.

Memory Leak Detection and Analysis

Memory leaks lead to application slowdowns and eventually cause applications to crash. JVM Diagnostics alerts administrators on abnormalities in Java memory consumption. Administrators can use JVM Diagnostics and take heap dumps in production applications without disturbing the application. They can take multiple heap dumps over a period of time, analyze the differences between the heap dumps and identify the object causing the memory leak. Heap analysis can be performed even across different application versions. Differential Heap Analysis with multiple heap dumps makes it easy to identify memory leaks.

JVM Pooling

JVM Diagnostics allows administrators to group sets of JVMs together into JVM pools. This provides the console user with a single view across all related JVMs. Hence all JVM's that make up a single application or a single cluster may be grouped together in an application. This allows administrators to visualize problems naturally and intuitively.

Real-time and Historical Diagnostics

With JVM Diagnostics, you can perform real-time and historical diagnostics on your Java applications. This provides you with detailed insight on the root causes of production problems without having to reproduce the same problem in a Test or QA environment. You can play back transactions interactively from the browser and view the time spent in the network and the server. You can also view the response time breakdown by Servlet, JSP, EJB, JDBC, and SQL layers.

Apart from the real-time data, you can also analyze historical data to diagnose problems that occurred in the past. You can view historical data that shows the time taken by end-user requests and the breakdown by Servlet, JSP, EJB, JDBC, and SQL layers.

New Features in this Release

This section lists the new JVM Diagnostics features in Oracle Enterprise Manager Grid Control 11g R1.

One-off Patch Enhancements

The features listed in this section are available only if you have applied the one-off patch.

  • Multiple JVM Diagnostics Managers: You can now deploy multiple JVM Diagnostics Managers and connect one or more agents to these managers. For more details, refer to the Scaling Out by Deploying Multiple JVM Diagnostics Managers section.

  • Level Zero (L0) Tracing: If the Application Dependency and Performance Agent is running and Request Monitoring has been configured, additional data is displayed in the JVM Diagnostics screens. For example, you may see:

    • Average Age on Top Requests for Domain (Pool) Summary page. Click a Request Name to view the request flow details.

    • In the Domain (Pool) or Real Time Analysis page, the Age, ECID, and RID is also displayed.

  • SQL Identifier Support - You can now perform queries and search for a SQL ID corresponding to a particular SQL text or SQL hash value.

  • Application Development Framework (ADF): With ADF support, entity objects and view objects are also displayed in the top metrics section

  • Modifying the web.xml File: You now have an option to modify the web.xml file for the JVM Diagnostics Agent. For details, see Download Agent Page.

Supported Platforms and JVMs

The JVM Diagnostics Manager is supported on:

The JVM Diagnostics Database Agent supports Oracle 8i or later on the following platforms:

The JVM Diagnostics Agent supports the following JVMs:

See the My Oracle Support site for the latest certification details.

Note:

  • We recommend that you use Sun JDK 1.6.0_18 32-bit for the JVM Diagnostics Manager.

  • You can use 64-bit JVM for the JVM Diagnostics Agent.

User Roles

To use JVM Diagnostics, you must have either of the following Enterprise Manager system privileges:

You can define these privileges in the Setup pages. For more details on defining these privileges, see the Enterprise Manager Security chapter in the Administration Guide.