Domanda

Come si genera e si analizza un dump del thread da un'istanza JBoss in esecuzione?

È stato utile?

Soluzione

Esiste un metodo specifico per JBoss che è leggermente più user-friendly:

http://community.jboss.org/wiki/GenerateAThreadDumpWithTheJMXConsole

Ciò è particolarmente utile quando non si ha accesso diretto alla macchina host (cosa che "kill" richiederebbe).

Altri suggerimenti

http://java.sun.com/developer/technicalArticles/Programming/Stacktrace/

...

"Sulle piattaforme UNIX puoi inviare un segnale a un programma utilizzando il comando kill.Questo è il segnale di uscita, che viene gestito dalla JVM.Ad esempio, su Solaris puoi utilizzare il comando kill -QUIT process_id, dove process_id è il numero del processo del tuo programma Java.

In alternativa è possibile inserire la sequenza di tasti <ctrl>\ nella finestra in cui è stato avviato il programma Java.L'invio di questo segnale indica a un gestore di segnale nella JVM di stampare ricorsivamente tutte le informazioni sui thread e sui monitor all'interno della JVM."

...

"Determinazione degli stati del thread

Vedrai molti thread diversi in molti stati diversi in uno snapshot da un'analisi dello stack JVM.La chiave utilizzata è:

R Thread in esecuzione o eseguibile

S Filo sospeso

CW Thread in attesa di una variabile di condizione

MW Thread in attesa di blocco del monitor

MS Thread sospeso in attesa del blocco del monitor"

L'app Stacktrace è stata trovata Qui è anche utile, soprattutto su macchine Windows quando l'app Java non viene avviata dalla riga di comando.

Thread.getAllStackTraces() (da Java 1.5)

Due opzioni:

OPZIONE 1 Genera un dump del thread utilizzando la console JMX

Per generare un dump del thread:

  1. Apri la JMXConsole (ad esempio: http://localhost:8080 )
  2. Navigare verso jboss.system:type=ServerInfo bean (suggerimento: probabilmente puoi semplicemente CTRL-F e inserire type=ServerInfo nella finestra di dialogo)
  3. Fare clic sul collegamento per l'mbean Server Info.
  4. Vai in fondo dove dice listThreadDump
  5. Fare clic e ottenere il dump del thread

Appunti:

Se usi Internet Explorer dovresti usare File > Save As per salvare l'output invece di copiare i dati in un editor di testo.Per qualche motivo quando copi il testo da Internet Explorer le interruzioni di riga non vengono copiate e tutto l'output finisce su un'unica riga.

OPZIONE 2 Genera un thread dump utilizzando Twiddle

In alternativa puoi usare twiddle per eseguire il file listThreadDump() metodo e reindirizzare l'HTML restituito direttamente nel file.Utilizza questa riga di comando:

<JBOSS_HOME>/bin/twiddle invoke "jboss.system:type=ServerInfo" listThreadDump > threads.html

A volte JBoss si blocca così tanto che anche jmx-concole non risponde.In tal caso utilizzare kill -3 su Linux e Invia segnale Su Windows.

https://community.jboss.org/wiki/ThreadDumpJSP La pagina presenta threaddump.war autonomo e autonomo che può essere utilizzato senza JMX.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top