2013-09-02 10 views
19

Czy można odebrać zrzut wątku od Tomcat. Chcę monitorować działające wątki na Tomcat w określonym czasie.Zrzut wątku Tomcat

Uwaga: Robiłem to w logice internetowej, ale nie wiem, jak to zrobić na Tomcat.

Odpowiedz

32

Jeśli używasz Linuksa, możesz wysłać kill -3 [pid swojego tomcat] i zrzuci on wszystkie bieżące wątki w catalina.out.

+7

Chciałbym dodać, że będzie to prawdopodobnie rzeczywiście 'catalina.out' –

+0

dobry dodatek. – Julien

+2

Lepsza odpowiedź tutaj: http://stackoverflow.com/questions/4876274/kill-3-to-get-java-thread-dump – arun

5

Istnieje prosty sposób monitorować tematy tomcat i zrobić zrzut. Zacznij tomcat z folowing opcji Java:

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

Po ponownym uruchomieniu Tomcat można po prostu zacząć JConsole (część JDK) lub VisualVM i utworzyć nowe połączenie JMX do portu wybranej powyżej.
W obu narzędziach można również wykonać zrzut;)

!!! Ale rób to tylko w zamkniętym/zabezpieczonym środowisku - ponieważ nie ma ustawionego uwierzytelniania. !!!

0

Poniższe kroki powinny pomóc Ci aktualne wątki Java działa i analizować je:

  1. Pobierz IBM JCA, który jest miły wątek zrzutu analizator z IBM Thread & Dump Monitor Analyzer
  2. Wykonaj następujące czynności, aby uzyskać nici Tomcat zrzucić : [email protected]:~# sudo -u $TOMCAT_USER $JAVA_HOME/bin/jstack -J-d64 -l $(ps aux | grep '[c]atalina' | awk '{print $2}') > ~/threads.log
  3. Otwarte gwinty zrzucić z IBM Thread & Dump Monitor Analyzer

Uwaga: Zamień $JAVA_HOME ścieżką do bieżącego JDK, $TOMCAT_USER u użytkownika uruchamiającego Tomcat; jeśli przechodzą niewłaściwy użytkownika lub nawet za pomocą korzeni dostaniesz błąd tak:

3047: well-known file is not secure