Nav
You are viewing an older version of this section. Click here to navigate to the latest version.

Profiling Mule

The Mule Profiler Pack uses YourKit 9.0 to provide CPU and memory profiling, helping you identify memory leaks in your custom Mule ESB extensions. To use a different version of YourKit, instead of using the Profiler Pack see the YourKit documentation for the appropriate version for instructions on how to profile a Java application. When doing this with standalone Mule, note that any JVM flags need to be prefaced with -M so that they affect the Mule process rather than the wrapper process.

Installing the Profiler Pack

The Profiler Pack is contained in the Mule Enterprise Edition download. If you are installing Mule Enterprise Edition using the graphical installer, simply select the Profiler check box when installing the product.

If you are installing Mule Community Edition, go to the [downloads page], and under the latest stable community release, expand the Downloads section. You can then click the link to the .zip, .tar, or .gz version of the Profiler pack. After downloading, unpack it on top of the Mule installation.

Set the following environment variable:


         
      
1
LD_LIBRARY_PATH=$MULE_HOME/lib/native/profiler

Enabling the Profiler Agent

The Profiler agent exposes the YourKit Profiler to JMX to provide CPU and memory profiling. You configure the Profiler agent with the <management:yourkit-profiler/> element. For more information, see JMX Management.

Running the Profiler

To run the profiler, you run Mule with the -profile switch plus any extra YourKit startup options with multiple parameters separated by commas, e.g. -profile onlylocal,onexit=memory. This integration pack will automatically take care of configuration differences for Java 1.4.x and 5.x/6.x.

For example:


         
      
1
./mule -profile

Embedded Mule

If you are running Mule embedded in a webapp, the Profiler configuration is completely delegated to the owning container. Launch YourKit Profiler, Tools → Integrate with J2EE server…​ and follow the instructions. Typically, a server’s launch script is modified to support profiling, and you then use this modified start script instead of the original.