Je voudrais profiler une application qui s'exécute sur Tomcat avec l'outil VisualVM. Malheureusement, lorsque je demande à VisualVM de profiler Tomcat, Tomcat imprime quelques messages indiquant qu'il se connecte à un outil de profil, puis se ferme simplement.
Détails…
J'utilise Windows XP, Tomcat 6, VisualVM 1.2.1 et JDK 1.6.0_11.
Notez que si je clique avec le bouton droit sur l'application Tomcat et que je sélectionne "Heap Dump" qui semble fonctionner correctement.
J'ai le profilage VisualVM
qui fonctionne avec mon application Tomcat
maintenant. J'avais besoin d'ajouter les paramètres suivants au démarrage de Tomcat:
-Dcom.Sun.management.jmxremote.port=8086
-Dcom.Sun.management.jmxremote.ssl=false
-Dcom.Sun.management.jmxremote.authenticate=false
Voici un article sympa sur la surveillance Tomcat
avec VisualVM
.
Oui, nous profilons les applications Tomcat.
Aller à catalina.bat
ou catalina.sh
et ceci à votre Java_OPTS
(J'utilise 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
Votre Java_OPTS
devrait ressembler
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
Mis à jour après le commentaire de Ryan qu'il est préférable d'utiliser setenv.sh
. C'est mon setenv.sh
pour JDK 8. Il manque quelques autres paramètres mais bon pour commencer.
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
Une fois que vous déposez le setenv.sh
dans le répertoire bin, vous pouvez voir les changements dans la console au démarrage.
Voici un autre didacticiel étape par étape pour profiler les applications Tomcat avec Visual VM: Dépannage des performances des applications avec Visual VM
J'utilise Tomcat 7 et la configuration complète nécessite plus de paramètres pour fonctionner.
-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)
source: http://blog.markshead.com/1129/connecting-visual-vm-to-Tomcat-7/
Tout ce dont vous avez besoin pour cela, définissez ces options VM:
-XX: + UnlockCommercialFeatures -XX: + FlightRecorder -XX: + UnlockDiagnosticVMOptions -XX: + DebugNonSafepoints -XX: FlightRecorderOptions = stackdepth = 512