2013-09-02 11 views
19

C'è via per prendere una discarica di thread da Tomcat. Voglio monitorare i thread in esecuzione su Tomcat in un determinato momento.Dump thread di Tomcat

Nota: Lo stavo facendo sulla logica Web, ma non so come sia fatto su Tomcat.

risposta

32

Se si utilizza Linux, è possibile inviare un kill -3 [pid del proprio tomcat] e scaricherà tutti i thread correnti in catalina.out.

+7

vorrei aggiungere che probabile che tu sia 'catalina.out' –

+0

Buona aggiunta davvero. – Julien

+2

Risposta migliore qui: http://stackoverflow.com/questions/4876274/kill-3-to-get-java-thread-dump – arun

5

C'è un modo semplice per monitorare le discussioni Tomcat e fare una discarica. avviare Tomcat con le opzioni Java folowing:

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

Dopo che il gatto si riavvia si può semplicemente avviare jconsole (parte di JDK) o VisualVM e creare una nuova connessione JMX alla porta che avete scelto in precedenza.
In entrambi gli strumenti si ha anche la possibilità di fare un dump;)

!!! Ma farlo solo in ambiente chiuso/protetto - poiché non esiste un set di autenticazione. !!!

0

I passaggi seguenti dovrebbero aiutarvi a ottenere i thread Java attuali corrente e analizzare:

  1. Scarica IBM JCA che è un bel analizzatore discarica filo da IBM Thread & Dump Monitor Analyzer
  2. Eseguire il seguente per ottenere i fili Tomcat discarica : [email protected]:~# sudo -u $TOMCAT_USER $JAVA_HOME/bin/jstack -J-d64 -l $(ps aux | grep '[c]atalina' | awk '{print $2}') > ~/threads.log
  3. Aprire i fili discarica con IBM Thread & Dump Monitor Analyzer

Nota: Sostituire $JAVA_HOME con il percorso del JDK corrente, $TOMCAT_USER con l'utente che esegue Tomcat; se si passa l'utente sbagliato o anche utilizzando radice si ottiene un errore come questo:

3047: well-known file is not secure 
Problemi correlati