IBM Extensions for Memory Analyzer for WebSphere Enterprise Service Bus

This article describes the WebSphere Enterprise Service Bus extensions to Memory Analyzer, and shows you how to analyze operating system level dumps or portable heap dumps from a WebSphere Enterprise Service Bus solution.

Martin Ross (martin.ross@uk.ibm.com), Performance Analyst, IBM

Photo of Martin RossMartin Ross is a Performance Analyst on the WebSphere ESB team at the IBM Software Lab in Hursley Park, United Kingdom. He has worked on WebSphere ESB since 2006 and has a degree in Software Engineering from the University of Southampton. You can contact Martin at martin.ross@uk.ibm.com.



13 June 2012

Also available in Russian

Introduction

This article introduces the IBM® Extensions for Memory Analyzer for WebSphere® Enterprise Service Bus, which augments existing data structures in the IBM Monitoring and Diagnostic Tools for Java™ -- Memory Analyzer, and provides detailed reports pertaining to different aspects of the WebSphere ESB solution. The product-specific extension to Memory Analyzer significantly improves the effectiveness and efficiency of problem diagnosis and resolution, and provides a deeper understanding of your WebSphere ESB deployment.

Short names for products and tools used in this article

  • IBM Extensions for Memory Analyzer is called IEMA.
  • IBM WebSphere Enterprise Service Bus is called WebSphere ESB.
  • IBM Monitoring and Diagnostic Tools for Java -- Memory Analyzer is called Memory Analyzer.
  • IBM Monitoring and Diagnostic Tools for Java -- Health Center is called Health Center.
  • Mediation Flow Component is called MFC.

Operating system level and portable heap dumps

A running IBM JVM enables you to produce different types of diagnostic data when different events occur. This article concentrates on the analysis of two types of dumps that you can generate:

Heap dump
A Heap dump is a dump of all live objects on the Java heap. The dump is stored in a Portable Heap Dump (PHD) file, which is a compressed binary format. A heap dump provides a snapshot of the memory of a running Java process, including details of classes, objects, Garbage Collector roots, and thread stacks. It shows objects that are using large amounts of memory on the Java heap, and shows what is preventing them from being collected by the Garbage Collector.
System dump
A System dump is a platform-specific file that contains information about active processes, threads, and the system memory. A system dump contains additional information not present in a heap dump -- such as field names, field values, and the contents of primitive arrays. To use Memory Analyzer with a system dump, you must first use the jextract utility, which obtains platform-specific information -- such as word size, endianness, data structure layouts, and symbolic information -- and puts this information into an XML file. The jextract utility may also collect other useful files and compress all of them, along with the system dump, into a single ZIP file for use in subsequent problem diagnosis.

System dumps are typically large, and generating this diagnosis data can have significant processing overhead compared to generating a heap dump. However, IEMA for WebSphere ESB leverages the additional information contained within a system dump, which is often key to the problem diagnosis and resolution. Therefore it is recommended that you generate a system dump and use the jextract utility for problem diagnosis.

Acquiring dumps

There are several ways to acquire a heap dump or system dump:

Using Ctrl-Break or SIGQUIT

When a Ctrl-Break or SIGQUIT (kill -3) is sent to the IBM JVM, it generates a user event in the IBM dump engine. You can configure the event using command-line options to generate either a system dump (-Xdump:system:events=user) or a heap dump (-Xdump:heap:events=user)

Using the operating system (system dump only)

  • AIX -- gencore (or destructive kill -[6|11])
  • Linux/Solaris -- gcore (or destructive kill -[6|11])
  • Windows -- userdump.exe
  • z/OS -- SVCDUMP/Console Dump

Using IBM Monitoring and Diagnostics Tools for Java -- Health Center

The Health Center provides a menu option to request either a system dump or heap dump from a running Java process.

Using the wsadmin utility

The wsadmin utility provides an API that supports system dump and heap dump generation. Use the following commands to acquire the appropriate diagnosis data:

wsadmin> Set objectName [$AdminControl queryNames WebSphere:types=JVM,
                         process=<servername>,node=<node>,*]
wsadmin> $AdminControl invoke $objectName generate<Heap|System>Dump

IBM Monitoring and Diagnostic Tools for Java -- Memory Analyzer

Memory Analyzer builds on the diagnostics capabilities of the Eclipse Memory Analyzer Tool to enable proficient Java heap analysis for the IBM Virtual Machines for Java. The Diagnostic Tool Framework for Java is used to implement the extended function, which enables you to:

  • Diagnose and resolve memory leaks involving the Java heap.
  • Derive architectural understanding of the Java application through footprint analysis.
  • Improve application performance by tuning memory footprint and optimizing Java collections and Java cache usage.
  • Produce analysis plug-ins with capabilities specific to your application.

It is the final point that enables IEMA for WebSphere ESB to provide the product-specific extensions. Memory Analyzer exposes a number of extension points to extend the base functionality, and two of these are used for IEMA for WebSphere ESB to extract and present product specific-data. The two extension points that IEMA for WebSphere ESB uses are:

org.eclipse.mat.report.query
Used for detailed analysis or exploring dumps. It provides a report contained within Memory Analyzer that can involve tables, charts, histograms, and free text. This extension point also enables integration of the query report into the menu system of Memory Analyzer.
org.eclipse.mat.api.nameResolver
Used to provide meaningful descriptions of objects through augmentation of existing data structures.

IBM Extensions for Memory Analyzer for WebSphere ESB

IEMA for WebSphere ESB provides product-specific extensions to Memory Analyzer that build on product knowledge to augment existing data structures and provide detailed reports on different aspects of the WebSphere ESB solution. This section outlines the available function explains how to use the data for effective and efficient problem analysis and resolution. While this article covers all functions, analysis of heap dumps only provides a subset of the available functions.

Problem determination and resolution

IEMA for WebSphere ESB delivers new product-specific function by using two extension points exposed in the underlying technology. The simplest are the Name Resolvers that use the org.eclipse.mat.api.nameResolver extension point in Memory Analyzer. The table below shows the objects for which a Name Resolver is available and the augmentation provided:

Table 1. Available Name Resolver augmentations
ObjectsAugmentation
Mediation PrimitivesDisplay name for the Mediation Primitive. The XSLTMediationPrimitive and BOMapperMediationPrimitive contain additional data relating to the transformation map being used. The FanInMediationPrimitive and FanOutMediaitonPrimitive also contain information on the mode in which they are functioning.
JavaMediationPrimitiveType of MediationPrimitive that it is wrapping
LightWeightFlowRegistrySize of registry
ManagedExportImplDisplay name of export
ManagedImportImplDisplay name of import
ManagedModuleImplName of managed module
SCAModulePropertyImplName and value of SCA module property
SIBXMediationFlowName of associated module.
SIBXMediationFlowComponentImplName of component and associated module
SIBXMediationFlowComponentPoolSize of pool

The augmentation of existing data structures with the information defined provides a simple tool to identify associations between objects. Augmentation is a powerful tool for fast and effective problem analysis, enabling you to quickly identify the source of a problem and relate it to known resources in the development environment.

The second extension point that IEMA for WebSphere ESB uses is org.eclipse.mat.report.query, which provides a number of queries accessible through the Open Query Browser menu, as shown below:

Figure 1. Query Menu
Query Menu

The available queries are detailed below.

WebSphere ESB Overview

The WebSphere ESB Overview query provides detailed information on the environment in which WebSphere ESB is installed, including information about the product itself, such as installation versions, build revisions, and installation directories. It provides a convenient summary of the installation, and specifies code levels for the WebSphere ESB solution. The query also provides information about the server configuration, as well as the installed applications containing a Mediation Flow Component (MFC). This information helps with analysis of the solution architecture.

The WebSphere ESB Overview also contains the pie chart shown below, which shows the percentage of the Java heap used by WebSphere ESB. The percentage is calculated at the class loader level and enables you to quickly identify memory issues with any classes and object instances related to WebSphere ESB.

Figure 2. The WebSphere ESB Overview -- Heap utilisation
The WebSphere ESB Overview -- Heap utilisation

The final information provided is a subset of the Java command-line arguments, which give you an understanding of how the Java heap has been tuned. The subset is restricted to those options with the -X prefix, which encapsulates such detail as the minimum and maximum heap settings, and information on Garbage Collector policy.

The WebSphere ESB Overview provides a sound starting point for analysis, identifying any obvious issues with the configuration or architecture and any WebSphere ESB-specific memory issues.

WebSphere ESB Statistics

The WebSphere ESB Statistics query presents detailed information on a number of objects and resources in the WebSphere ESB run time, such as details on specific thread pools, and SCAModuleProperty and JavaMediationPrimitive objects. This query helps you identify issues related to mediation flow design, thread pool tuning, and administration.

WebSphere ESB Mediation Flows

The WebSphere ESB Mediation Flows query presents detailed information on the mediation flows within the dump, including the used and retained heap of all flows within a component, and the mediation flow logic detail. The logic detail is depicted in a hierarchical structure, with additional information on the associated display names of the mediation primitives provided as tool tips when you mouse over them. When a mediation primitive has multiple input connections, a reference is provided in the structure to the first occurrence of that sub-tree.

The WebSphere ESB Mediation Flows query gives you a sound understanding of the deployed applications and the logic that they are designed to execute. It also helps you identify mediation flows that have unexpected memory use, and shows workload balance via a count of the number of instances of a particular SIBXMediationFlow on the Java heap. Here is an example report generated from the WebSphere ESB Mediation Flows query:

Figure 3. WebSphere ESB Mediation Flows query
WebSphere ESB Mediation Flows query

WebSphere ESB Mediation Primitives

The WebSphere ESB Mediation Primitives query presents information on the mediation primitives in the dump. The number of object instances and their associated head sizes are shown in the table, including all custom mediation primitives you have created. If the retained heap of a particular type of mediation primitive exceeds 5% of the available heap then that mediation primitive is highlighted, enabling a more targeted analysis of the Java heap and the WebSphere ESB applications deployed.

WebSphere ESB Mediation Flow Design

The WebSphere ESB Mediation Flow Design query provides recommendations for changes to the design of deployed mediation modules based on analysis of the contents of the dump. The query identifies two possible areas for performance improvements:

Chained XSLTMediationPrimitives
The query identifies mediation modules that contain XSLTMediationPrimitives that are chained together. Combining the transformations into a single XSLTMediationPrimitve will improve performance.
Use of mapping technologies
The query identifies XSLTMediationPrimitives that perform a transformation on the root of the Service Message Object (SMO). The alternative mapping technology in the development environment is implemented in the BOMapperMediationPrimitive, which improves performance compared to the XSLTMediationPrimitive when transforming on the root of the SMO.

WebSphere ESB Applications

The WebSphere ESB Applications query presents detailed information on the applications installed on the server that contain an MFC. The name of each identified application is displayed with library dependencies, defined parsing runtime, imports, exports, and components. Additional information is provided on the imports, exports, and components themselves, such as name, associated resources, and endpoints. This query helps you understand the deployed applications and their configuration, integration, and communications. Here is an example report generated from the WebSphere ESB Applications query:

Figure 4. WebSphere ESB Applications query
WebSphere ESB Applications query

Conclusion

IBM Extensions for Memory Analyzer for WebSphere ESB is a powerful tool that enables effective and efficient determination and resolution of memory problems, and provides a deeper understanding of the WebSphere ESB solution

Resources

Comments

developerWorks: Sign in

Required fields are indicated with an asterisk (*).


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name



The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


All information submitted is secure.

Dig deeper into WebSphere on developerWorks


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=WebSphere
ArticleID=821119
ArticleTitle=IBM Extensions for Memory Analyzer for WebSphere Enterprise Service Bus
publish-date=06132012