tomcat6 - for - Aplicación de Tomcat de perfil con VisualVM
tomcat 9 server download (4)
Me gustaría crear un perfil de una aplicación que se ejecute en Tomcat con la herramienta VisualVM. Lamentablemente, cuando le digo a VisualVM que perfilé Tomcat, Tomcat imprime un par de mensajes que indican que se está conectando a una herramienta de perfil y luego simplemente sale.
Detalles ...
Estoy usando Windows XP, Tomcat 6, VisualVM 1.2.1 y JDK 1.6.0_11.
- En Visual VM, hago clic derecho en la aplicación Tomcat y selecciono "Perfil"
- En la pestaña Perfil, presiono el botón Memoria (o el botón CPU).
- Tomcat sale
Tenga en cuenta que si hago clic derecho en la aplicación Tomcat y selecciono "Heap Dump", parece que funciona bien.
Estoy usando Tomcat 7 y la configuración completa requiere más parámetros para trabajar.
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9090 # port to connect JMX
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=50.112.22.47" # IP of the server running tomcat (it is necessary)
fuente: http://blog.markshead.com/1129/connecting-visual-vm-to-tomcat-7/
Sí, perfilamos las aplicaciones de Tomcat.
Vaya a catalina.bat
o catalina.sh
y esto a su JAVA_OPTS
(estoy usando Tomcat 6.0.16):
-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Su JAVA_OPTS
debería verse como
set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%/conf/logging.properties" -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Actualizado después de que Ryan comenta que es mejor usar setenv.sh
. Este es mi setenv.sh
para JDK 8. Faltan algunas otras configuraciones pero es bueno para empezar.
SUN_JVM_OPTS="
-server /
-XX:MaxMetaspaceSize=3G /
-XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled /
-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 /
-XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark /
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=2M /
-XX:+HeapDumpOnOutOfMemoryError /
-Dsun.net.inetaddr.ttl=60 /
-Dcom.sun.management.jmxremote /
-Dcom.sun.management.jmxremote.port=8480 /
-Dcom.sun.management.jmxremote.authenticate=false /
-Dcom.sun.management.jmxremote.ssl=false"
# Set custom application options here
APPLICATION_OPTS="-Dlog4j.configurationFile=patht-to-log/log4j2.xml -Dlog4j.debug=true "
JVM_OPTS="$GENERAL_JVM_OPTS $SUN_JVM_OPTS"
CATALINA_OPTS="$JVM_OPTS $APPLICATION_OPTS"
echo "Tomcat started with settings "$CATALINA_OPTS
Una vez que suelta el directorio setenv.sh
in bin, puede ver los cambios en la consola al inicio.
Aquí hay otro tutorial paso a paso para perfilar las aplicaciones de Tomcat con Visual VM: el rendimiento de la aplicación de resolución de problemas con Visual VM
Todo lo que necesita hacer es configurar estas opciones de VM:
-XX: + UnlockCommercialFeatures -XX: + FlightRecorder -XX: + UnlockDiagnosticVMOptions -XX: + DebugNonSafepoints -XX: FlightRecorderOptions = stackdepth = 512
Tengo perfiles de VisualVM
trabajando con mi aplicación Tomcat
ahora. Necesitaba agregar los siguientes parámetros al inicio de tomcat:
-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Aquí hay un buen artículo sobre la supervisión de Tomcat
con VisualVM
.