Wie generieren und analysieren Sie einen Thread-Dump von einer laufenden JBoss-Instanz?Wie generieren und analysieren Sie einen Thread-Dump von einer laufenden JBoss-Instanz?
Antwort
ist eine JBoss-spezifische Methode gibt, die etwas benutzerfreundlicher ist:
http://community.jboss.org/wiki/GenerateAThreadDumpWithTheJMXConsole
Dies ist besonders nützlich, wenn Sie keinen direkten Zugriff auf den Host-Rechner haben (was "Kill" erfordern würde).
http://java.sun.com/developer/technicalArticles/Programming/Stacktrace/
...
„Auf UNIX-Plattformen Sie ein Signal an ein Programm, indem Sie den Befehl kill senden können. Dieser wird das Signal zu beenden, die von der JVM behandelt wird. Zum Beispiel, auf Solaris können Sie den Befehl kill -quit process_id verwenden, wo process_id der Prozess Nummer Ihres Java-Programm.
Alternativ können Sie die Tastenfolge <ctrl> \ in dem Fenster, in dem das Java-Programm gestartet eingeben. Senden dieser Signal weist einen Signalhandler in der JVM an, rekursiv alle Informationen zu den Threads und Monitoren innerhalb der JVM ausdrucken. "
...
„Die Ermittlung der Thread-Zustände
Sie werden viele verschiedene Themen in vielen verschiedenen Zuständen in einem Schnappschuss von einer JVM-Stack-Trace siehe Der verwendete Schlüssel.
R Lauf oder ausführbarer Thread
aufgehängter Gewinde
CW Gewinde auf einer Bedingungsvariable Warte
MW Thema auf einem Monitor wartet sperren
MS Faden aufgehängt auf einem Monitor Sperre“wartet
Die Stacktrace App gefunden here ist auch nützlich, vor allem auf Windows-Maschinen, wenn die Java-App nicht über die Befehlszeile gestartet wird.
Manchmal sperrt JBoss so sehr, dass selbst jmx-concole nicht reagiert. In diesem Fall kill -3 unter Linux und SendSignal unter Windows verwenden.
Thread.getAllStackTraces() (seit Java 1.5)
zwei Optionen:
OPTION 1Generieren Sie ein Thread-Dump mit JMX-Konsole
Um ein Thread-Dump zu erzeugen:
- öffnen JMXConsole (zB :
http://localhost:8080
) - Navigieren Sie zu
jboss.system:type=ServerInfo
mbean (Hinweis: können Sie wahrscheinlich nur STRG-F und geben Sie Typ = ServerInfo im Dialogfeld ein) - Klicken Sie auf den Link für die Server Info mbean.
- Navigieren nach unten, wo es heißt
listThreadDump
- es klicken und Ihr Thread
Hinweise erhalten Dump:
Wenn Sie Internet Explorer verwenden, sollten Sie File > Save As
verwenden, um die Ausgabe anstelle des Kopierens zu speichern die Daten in einen Texteditor. Wenn Sie den Text aus Internet Explorer kopieren, werden die Zeilenumbrüche aus irgendeinem Grund nicht kopiert, und die gesamte Ausgabe endet in einer einzelnen Zeile.
OPTION 2generieren einen Thread Dump Twiddle mit
Alternativ können Sie das listThreadDump()
Verfahren und Rohr der zurück HTML-Datei direkt verwenden twiddle auszuführen. Verwenden Sie diese Befehlszeile:
<JBOSS_HOME>/bin/twiddle invoke "jboss.system:type=ServerInfo" listThreadDump > threads.html
https://community.jboss.org/wiki/ThreadDumpJSP Seite Funktionen standalone umluftunabhängigem threaddump.war dass ohne JMX verwendet werden kann.
Siehe https://community.jboss.org/wiki/ThreadDump für einige Optionen. – Vadzim