Our articles will be broken into at least two parts, firstly installing and setting up the tools and then using them with sample results.
Flight recorder is part of the Java Mission Control SE Advanced options.
Java Server JVM's Always Need To Be Tuned
In this piece we are going to share some tests we ran to evaluate a Java JVM log analyzer tool called censum from jClarity based in the UK.
We regularly load and capacity test Java applications
and in this case we started with the following.
Load Test System
JMeter Version - 2.12
JVM Oracle Version - 1.7.0_75
Test type - Endurance for 8 hours
Virtual Users - 50
Think Time - Gaussian Random Timer - Deviation 1 second - Constant delay offset 3 seconds
Number Of JMeter Samples - 861,253
JVM Oracle Version - 1.8.0_31
Tomcat Version - 7.0.23
For an application we used a version of Java Pet Store and recorded 1 script with 32 URL’s. As is mentioned above we ran the load test itself for 8 hours although we had several tests before that and we let the JVM run logging for 2 days before pulling the log for analysis. jClarity recommends at least 24 hours of logging and these are the garbage collection logging arguments we set:
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=25m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCCause -XX:+PrintGCApplicationStoppedTime -verbose:gc -Xloggc:cfwhispererGC.log
We also need to add these arguments to the JVM start parameters which are needed by the censum tool:
-XX:+PrintTenuringDistribution -XX:+PrintGCCause -XX:+PrintGCApplicationStoppedTime
We used some other JVM arguments which we have evolved over the past 2-3 years and which are exceptionally good for 64-bit Java web applications, there are more details on those here: http://javatune.com/post.cfm/important-oracle-java-virtual-machine-information
In some ways they behaved too well in our tests, as all indicators in the censum analysis were that the JVM garbage collection behavior was good. However, our goal was to assess the censum tool and we were able to do that, so with all this said, here is what we found.
In our case we ran the censum tool on a Windows 7 Home Premium and the install was simple after downloading from here http://www.jclarity.com/censum/. Censum is a commercial tool and they supply a 7 day free-trial without asking for credit-card/payment information first which I think is a good thing. After unzipping we have 3 files, one is the censum-full.jar and there are two run files, one for Windows and one for Linux.
We fired off our load test to create the GC log and to use the censum tool, we use a JVM-JDBC monitoring called SeeFusion and here is screen shot of that as the 8 hour endurance completed, as mentioned above we let the server run for two days before
On Windows we run the censum tool from the command prompt by executing the runCensum.bat file and we get the ability to import the log:
Once the log is successfully imported we are taken to the main dashboard with several options to view both textual and graphical details from the log analysis, those items in need of attention have a red marker next to them:
Here is an example of one of the many graphical views of data from the logs:
Overall censum is easy to get up and running and provides valuable insights to GC log behavior.
This is a listing of 16 performance monitoring utilities related to Java and the JVM.