Blog de Antonio Manuel Muñiz

Desarrollo, Ingeniería y Calidad del Software

Archivos por Etiqueta: Java Profiler

JIP Java Profiling

Buscando herramientas para realizar labores de profiling Java he encontrado JIP (Java Interactive Profiler). Esta herramienta permite monitorizar a nivel de máquina virtual parámetros tan útiles como métodos que más tardan en ejecutarse, número de veces que se llama al método o el tiempo que ocupó su ejecución durante la vida del Thread que lo contenía.

Además su configuración es muy sencilla, algo poco común en el mundo del profiling Java. Tan solo es necesario iniciar la máquina virtual con los siguientes parámetros:

-javaagent:/antonio/jip/profile.jar -Dprofile.properties=/antonio/jip/profile.properties

En función del contexto en el que nos movamos estas propiedades se configuran de un modo u otro. Por ejemplo, si estamos monitorizando una aplicación web que es lanzada a través de un wrapper incluiremos entradas en el wrapper.conf, pero si nuestra aplicación está en un Tomcat sólo tenemos que incluirlas en $CATALINA_OPTS. Eso si, las rutas a profile.jar y profile.properties (ambos incluidos en la distribución de JIP) deben ser absolutas.

Al inciar la JVM debemos ver en los logs lo siguiente:

Java Interactive Profiler: starting

Si no, algo hemos hecho mal.

Para iniciar la monitorización haremos uso del cliente de JIP:

./file.sh localhost 15599 /Users/Antonio/temp/jip/jip-1.1.1/client/dump.txt
./start.sh localhost 15599

Esto inciará la sesión de profiling. Cuando hayamos realizado las pruebas oportunas:

./finish.sh localhost 15599

Si todo ha ido bien debemos tener en el directorio seleccionado dos ficheros nuevos: dump.txt y dump.xml. Para visualizar los resultados de una forma más amigable podemos usar jipViewer:

./jipViewer.sh dump.xml

La aplicación Java nos mostrará todos los datos del análisis:

JIP Viewer

JIP Viewer

Para terminar comentar que hay algunos detalles mejorables: la documentación en cuanto a interpretación de los datos es escasa y la aplicación monitorizada va mucho más lenta cuando se está monitorizando. Esto último es un factor común a todas las herramientas de profiling debido al uso de agentes Java que inyectan código para poder realizar los cálculos de tiempo necesarios.