Sie sind auf Seite 1von 10

Using Java Mission Control for performance monitoring

Back to all blog posts

04.06.2014

This blog post intends to give some insight into what the monitoring and diagnostics tool Oracle Java Mission Control (JMC)
is and how it can be used to investigate Java application performance. There is already a lot of very good writings available
about this subject like this or this one. This post aims to be more practical presentation. In this post well be connecting JMC
to instance of SampleConsoleServer running on a remote host. Then we will log some runtime data with Java Flight Recorder
and analyze it with Java Mission Control.

Note that Java Mission Control is free for use during development and testing but requires a license when used for production
purposes.

What is Oracle Java Mission Control?

Oracle Java Mission Control is a tool suite for managing, monitoring, profiling, and troubleshooting your Java applications.
Oracle Java Mission Control has been included in standard Java SDK since version 7u40. JMC consists of the JMX Console
and the Java Flight Recorder. More plug-ins can easily be installed from within Mission Control. JMC can also be installed in
Eclipse IDE.

Java Mission Control uses JMX to communicate with remote Java processes. The JMX Console is a tool for monitoring and
managing a running JVM instance. The tool presents live data about memory and CPU usage, garbage collections, thread
activity, and more. It also includes a fully featured JMX MBean browser that you can use to monitor and manage MBeans in
the JVM and in your Java application.

To enable the remote management agent on a Java process well add the following parameters when starting it:

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=3614
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

Locally these options arent needed but in this example were going to run SampleConsoleServer on a remote testserver. Also
note that screenshot below illustrates Eclipses Run Configurations -> Arguments tab.
Set VM arguments to enable remote management.

Now when the SampleConsoleServer is started it will allow JMX connections to port 3614. Port number was assigned
randomly based on current date.

JMC is bundled together with JDK and can be found from C:\Program Files\Java\jdk1.x.x_xx\bin\jmc.exe on Windows
machines.
Select Create a new custom JVM connection.

Enter Hostname/IP-address and port information and click Finish.


A picture of Overview-tab.

Monitor your Java application through MBeans in the MBean Browser.


Define rules to trigger alerts on changes in MBean values.

The tabbed pages provide runtime information about system properties, memory management, Java threads and more.

Java Flight Recorder

Java Flight Recorder is a profiling and event collection framework built into the Oracle JDK. Java Flight Recorder can be
used to collect recordings without using JMC, but in this example we will be using these tools together.

The application which is to be analyzed must always be started with options

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
More VM arguments added before starting SampleConsoleServer.

Well also run a script connecting UaClients, reading values from the SampleConsoleServer and disconnecting UaClients to
get somewhat of a interesting dataset generated.

Flight Recording settings can be opened by double-clicking the Flight Recorder icon in the JMV Browser.
Flight recording settings.

There are two alternative recording types: fixed recordings and continuous recordings. Continuous recordings have no end
time defined and they must be explicitly dumped.

After clicking Finish, the lower edge of the screen will show the recording progress. In this example we will use fixed time
recording and run the flight recording for 1 minute. After the recording finishes, the results can be analyzed with JMC.

The General tab of flight recording looks like this:


The Java Flight Recorder provides information about the operating system, the JVM and the Java application running in the
JVM.

It is clearly visible from the CPU usage spikes that the script has connected and disconnected set of clients five times during
the one minute time period of flight recording. Also in the beginning of recording last batch of previous clients were just
about to disconnect from server.

Next we move on to the Code tab:


Code tab

This tab shows us activity of different Packages and Classes. We can deduct that java.util.concurrent has been the most used
Package during this execution and org.opcfoundation.us.builtintype.NodeId is the most used Class.

Lets move on to the Hot Methods tab in the bottom of the screen:
Hot Methods tab

This view shows us the activity of specific methods and the origin from where these methods have been called. We can see
that org.opcfoundation.ua.builtintypes.NodeId.compareTo(NodeId) consumed the most time in our execution setting.

Conclusion

This was a short introduction to using Java Mission Control and Flight Recorder. In a coming post well be looking into
declaring our own MBeans and MXBeans which can be viewed with a MBean browser. Well also make an example OPC
UA server which publishes runtime data in its address space.

Similar tools to look into:

Java Mission Control is one of many performance monitoring and diagnostics tools available for the Java platform.

JVisualVM
JConsole
jcmd
Jmap
jProfiler, etc

Das könnte Ihnen auch gefallen