Perfilado de la aplicación
Puede perfilar aplicaciones Java locales y remotas usando Java VisualVM.
Editar los scripts de arranque de Tomcat
Sección titulada «Editar los scripts de arranque de Tomcat»Edite los ficheros $TOMCAT_HOME/bin/setenv.* (setenv.sh para Linux y setenv.bat para 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"Autenticación
Sección titulada «Autenticación»Para mejorar la seguridad, habilite la autenticación. Edite los ficheros $TOMCAT_HOME/bin/setenv.* (setenv.sh para Linux y setenv.bat para Windows).
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"Edite el fichero de control de acceso $CATALINA_HOME/conf/jmxremote.access:
monitorRole readonlycontrolRole readwriteEdite el fichero de contraseñas $CATALINA_BASE/conf/jmxremote.password:
monitorRole tomcatcontrolRole tomcatRestrinja el acceso a estos ficheros:
$ chmod 600 $CATALINA_HOME/conf/jmxremote.access$ chmod 600 $CATALINA_HOME/conf/jmxremote.passwordMonitorización de una JVM remota a través de SSH
Sección titulada «Monitorización de una JVM remota a través de SSH»La forma más sencilla de conectarse al JMX remoto es usar un proxy SOCKS.
$ ssh user@external.server.ip -D 8888Configure VisualVM para usar este proxy. Vaya a Tools > Options > Network y edite Manual Proxy Settings. Configure el proxy SOCKS en localhost y puerto 8888.

Ahora puede conectar VisualVM al destino remoto. Vaya a File > Add JMX Connection… y escriba la IP o el hostname de la máquina remota y el puerto JMX configurado (en nuestro ejemplo de configuración, 9090).

Java incluye HPROF, un perfilador que recopila información en tiempo de ejecución de la aplicación. HPROF es capaz de mostrar el uso de CPU, estadísticas de asignación de memoria (heap) y perfiles de contención de monitores.
Por ejemplo, puede recopilar información de uso de CPU mediante el muestreo de hilos.
Edite el fichero $TOMCAT_HOME/bin/setenv.sh (o setenv.bat si usa Windows):
CATALINA_OPTS="$CATALINA_OPTS -agentlib:hprof=cpu=samples"