Profiling OpenKM

From OpenKM Documentation
Revision as of 09:34, 11 October 2012 by Pavila (talk | contribs)

Jump to: navigation, search

You can profiling local and remote Java applications using Java VisualVM. For local application is easy because it detect automatically them and show in the listing. For remote application you need to do a little work.

First of all add this line to $TOMCAT_HOME/bin/setenv.sh file (or setenv.bat if using Windows):

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote=true"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=9090"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=127.0.0.1"

Nota clasica.png The java.rmi.server.hostname should match the IP of the remote server, so replace 127.0.0.1 by the right IP.

In order to connect to this remote Tomcat instance, go to File > Add JMX Connection... and fill the hostname and port. In this case the port is 9090 but you can set another one using the com.sun.management.jmxremote.port property.

Authentication

To enhance security, enable authentication:

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access"

Edit the access allow file $CATALINA_HOME/conf/jmxremote.access:

 monitorRole readonly
 controlRole readwrite

Edit the password file $CATALINA_BASE/conf/jmxremote.password :

 monitorRole tomcat
 controlRole tomcat

And finally, restrict access to these files:

 $ chmod 600 $CATALINA_HOME/conf/jmxremote.access
 $ chmod 600 $CATALINA_HOME/conf/jmxremote.password

More info:

HPROF

Java includes HPROF, a profiler which collect application runtime information. HPROF is capable of presenting CPU usage, heap allocation statistics, and monitor contention profiles.

For example, can collect CPU usage information by sampling threads. Add this line to $TOMCAT_HOME/bin/setenv.sh file (or setenv.bat if using Windows):

CATALINA_OPTS="$CATALINA_OPTS -agentlib:hprof=cpu=samples"

When Tomcat starts you can see a file called java.hprof.txt. The CPU profiling info will be dumped to this file once Tomcat process is stopped.

More info: