web-dev-qa-db-fra.com

Tomcat thread dump

Y a-t-il moyen de prendre un vidage de thread de Tomcat. Je veux surveiller les threads en cours d'exécution sur Tomcat à un moment donné.

Remarque: Je faisais cela sur la logique Web mais je ne sais pas comment cela peut être fait sur Tomcat.

19
Abdullah

Si vous utilisez Linux, vous pouvez envoyer un kill -3 [pid de votre Tomcat] et il videra tous les threads actuels du fichier catalina.out.

33
Julien

Il existe un moyen simple de surveiller les threads Tomcat et de faire un cliché. Lancez Tomcat avec les options Java suivantes:

-Dcom.Sun.management.jmxremote.port=<some free port>
-Dcom.Sun.management.jmxremote.ssl=false
-Dcom.Sun.management.jmxremote.authenticate=false

Une fois Tomcat redémarré, vous pouvez simplement démarrer jconsole (composant de jdk) ou visualvm et créer une nouvelle connexion jmx au port que vous avez choisi ci-dessus.
Dans les deux outils, vous avez également la possibilité de faire un dump;)

!!! Mais faites cela uniquement dans un environnement fermé/sécurisé - car il n'y a pas d'authentification définie. !!!

5
Patrik Bego

ajoutez une mélodie Java à votre serveur https://code.google.com/p/javamelody/

il vous donne beaucoup d'informations, y compris les discussions dans le runtime

5
olexii

Veuillez essayer le profileur Netbeans pour profiler toutes les applications Web.

https://profiler.netbeans.org/

http://wiki.netbeans.org/FaqProfilerAttachRemoteServer

0
Prabhakaran

Les étapes suivantes devraient vous aider à exécuter et à analyser les threads Java actuels:

  1. Téléchargez IBM JCA qui est un analyseur de vidage de fil Nice à partir de Analyseur de moniteur de threads et de vidages IBM
  2. Exécutez ce qui suit pour obtenir le dump des threads Tomcat: root@localhost:~# Sudo -u $Tomcat_USER $Java_HOME/bin/jstack -J-d64 -l $(ps aux | grep '[c]atalina' | awk '{print $2}') > ~/threads.log
  3. Ouvrez le vidage de threads avec Analyseur de moniteur de threads et de vidages IBM

Remarque: Remplacez $Java_HOME par votre chemin d'accès à votre JDK actuel, $Tomcat_USER par l'utilisateur exécutant Tomcat; Si vous passez le mauvais utilisateur ou même l’utilisation de root, vous obtiendrez une erreur comme celle-ci:

3047: well-known file is not secure
0
Guido Medina