Ir al contenido

Profiling de la aplicación

Puede analizar aplicaciones Java locales y remotas usando Java VisualVM.

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"

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 readonly
controlRole readwrite

Edite el fichero de contraseña $CATALINA_BASE/conf/jmxremote.password:

monitorRole tomcat
controlRole tomcat

Restrinja el acceso a estos ficheros:

Ventana de terminal
$ chmod 600 $CATALINA_HOME/conf/jmxremote.access
$ chmod 600 $CATALINA_HOME/conf/jmxremote.password

La forma más sencilla de conectarse al JMX remoto es usar un proxy SOCKS.

Ventana de terminal
$ ssh user@external.server.ip -D 8888

Configure 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… e introduzca la IP o el hostname de la máquina remota y el puerto JMX configurado (en nuestra configuración de ejemplo, 9090).

Java incluye HPROF, un profiler que recopila información de tiempo de ejecución de la aplicación. HPROF es capaz de presentar el uso de CPU, estadísticas de asignación de heap y perfiles de contención de monitores.

Por ejemplo, puede recopilar información de uso de CPU muestreando hilos.

Edite el fichero $TOMCAT_HOME/bin/setenv.sh (o setenv.bat si usa Windows):

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