jeudi 28 février 2008

Utiliser la JConsole avec tomcat

JConsole est un utilitaire fourni avec le JDK. Il permet de voir l'état d'une machine virtuelle et il est particulièrement utile lorsqu'il s'agit d'effectuer le diagnostic de performance d'une application.

Pour une application Web, il faut observer le tomcat. Pour ce faire, on crée dans le répertoire bin un fichier setenv.sh en ajoutant la ligne suivante :

if [ "$1" = "start" ]; then
export JAVA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=50001 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
fi



Ou bien sous windows dans setclasspath (de Tomcat 6.0)
set JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=50001 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

Ensuite il faut lancer JConsole et se connecter sur la machine à observer sur le port 50000. Bien entendu, il est possible de sécuriser l'accès à ces informations.


-verbose:class permet d'afficher d'ou sont chargée les différentes classes.

3 commentaires:

Malick a dit…

Bonjour,
Merci pour cette astuce!
Mon serveur est sous linux et j'ai finalement été obligé d'éditer le fichier setclasspath.sh pour rajouter la ligne:
set JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=50001 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
Maintenat ça marche!
Mais ce que je trouve bizarre c'est qu'en créant ce fichier setenv.sh, mon serveur tomcat ne démarre pas.
En connais tu la raison?
Merci

Clement Soullard a dit…

Le fichier setenv.sh n'est peut-être pas pris en compte dans toutes els versions de tomcat.

Sam a dit…

Pour ce connecter avec cette configuration il faut indiquer dans L'url JMX suivante :
service:jmx:rmi:///jndi/rmi://hostname:5001/jmxrmi

Avec le port 50001 !!!!