Profilo Tomcat Application Con VisualVM
Domanda
Vorrei analizzare un'applicazione che gira su Tomcat con lo strumento VisualVM. Purtroppo, quando dico VisualVM al profilo Tomcat, Tomcat stampa un paio di messaggi che indicano che si collegano a uno strumento di profilo e poi esce semplicemente.
Dettagli ...
Sto usando Windows XP, Tomcat 6, VisualVM 1.2.1, e JDK 1.6.0_11.
- In Visual VM, right-click sull'applicazione Tomcat e selezionare “Profilo”
- Nella scheda Profiler, si preme il pulsante di memoria (o il pulsante CPU).
- Tomcat esce
Si noti che se right-click sull'applicazione Tomcat e selezionare “heap dump” che sembra funzionare OK.
Soluzione
Ho VisualVM
profilatura a lavorare con la mia applicazione Tomcat
ora. Avevo bisogno di aggiungere i seguenti parametri per l'avvio Tomcat:
-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Ecco un bell'articolo sul monitoraggio Tomcat
con VisualVM
.
Altri suggerimenti
Si facciamo il profilo delle applicazioni Tomcat.
Vai catalina.bat
o catalina.sh
e questo al vostro JAVA_OPTS
(sto 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
Il JAVA_OPTS
dovrebbe assomigliare
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
Aggiornamento dopo Ryan commento che è meglio usare setenv.sh
. Questo è il mio setenv.sh
per JDK 8. mancanti alcune altre impostazioni, ma buono per iniziare.
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 volta che si rilascia il setenv.sh
nella directory bin, è possibile vedere i cambiamenti nella console all'avvio.
Ecco un altro passo a passo al profilo applicazioni Tomcat con Visual VM: Risoluzione dei problemi delle prestazioni delle applicazioni con Visual VM
Sto usando Tomcat 7 e la configurazione completa reqires più parametri con cui lavorare.
-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)
fonte: http://blog.markshead.com / 1129 / biella-visual-vm-to-tomcat-7 /
Tutto quello che dovete fare è impostare le opzioni VM:
-XX: + UnlockCommercialFeatures -XX: + FlightRecorder -XX: + UnlockDiagnosticVMOptions -XX: + DebugNonSafepoints -XX: FlightRecorderOptions = stackdepth = 512