Wie man ein Thread-Dump aus einer laufenden JBoss-Instanz erzeugen und analysieren?
-
09-06-2019 - |
Frage
Wie Sie erzeugen und ein Thread-Dump aus einer laufenden JBoss-Instanz analysieren?
Lösung
Es gibt eine JBoss-spezifische Methode, die etwas benutzerfreundlicher ist:
http://community.jboss.org/wiki/GenerateAThreadDumpWithTheJMXConsole
Dies ist besonders nützlich, wenn Sie keinen direkten Zugriff auf die Host-Maschine (die die „kill“ erfordern würde).
Andere Tipps
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. Das ist das Signal zu beenden, die von der JVM behandelt wird. Zum Beispiel auf Solaris Sie den Befehl kill -quit process_id verwenden können, wo process_id ist der Prozess Nummer Ihres Java-Programm.
Alternativ können Sie die Tastenfolge eingeben
...
"Die Bestimmung der Thread-Zustände
Sie werden viele verschiedene Themen in vielen verschiedenen Zuständen in einem Schnappschuss von einer JVM-Stack-Trace sehen. Der Schlüssel wird verwendet:
R Lauf oder ausführbarer Thread
S Abgehängte Faden
CW Thema auf einer Bedingungsvariable warten
MW Gewinde auf einem Monitor Sperre warten
MS Gewinde auf einem Monitor Sperre suspendierte waiting "
Die Stacktrace App gefunden hier auch nützlich ist, vor allem auf Windows-Rechnern, wenn die Java-Anwendung wird nicht von der Kommandozeile aus.
gestartetThread.getAllStackTraces () (seit Java 1.5)
Zwei Optionen:
1 ein Thread-Dump generieren JMX-Konsole mit
Um ein Thread-Dump zu erzeugen:
- Öffnen Sie die JMXConsole (zum Beispiel:
http://localhost:8080
) - Navigieren
jboss.system:type=ServerInfo
mbean ( Hinweis: Sie können sich wahrscheinlich nur STRG + F und type = Serverinfo im Dialogfeld eingeben) - Klicken Sie auf den Link für den Server Info mbean.
- Navigieren nach unten, wo es heißt
listThreadDump
- Klicken Sie es und erhalten Sie Ihre Thread-Dump
Weitere Informationen:
Wenn Sie den Internet Explorer verwenden, sollten Sie File > Save As
verwenden, um die Ausgabe zu speichern, anstatt die Daten in einen Texteditor kopieren. Aus irgendeinem Grund, wenn Sie kopieren Sie den Text aus dem Internet Explorer die Zeilenumbrüche nicht kopiert werden und die gesamte Ausgabe endet auf einer einzigen Zeile nach oben.
2 einen Thread Dump generieren Twiddle mit
Alternativ können Sie twiddle verwenden, um die listThreadDump()
Methode und Rohr der zurück HTML-Code direkt ausführen Datei. Verwenden Sie diese Befehlszeile:
<JBOSS_HOME>/bin/twiddle invoke "jboss.system:type=ServerInfo" listThreadDump > threads.html
Manchmal so viel JBoss Schlösser, dass auch JMX-concole reagiert nicht. In einem solchen Fall Gebrauch töten -3 auf Linux und SendSignal unter Windows.
https://community.jboss.org/wiki/ThreadDumpJSP Seite verfügt über eigenständiges Selbst threaddump.war dass enthalten sind, können ohne JMX verwendet werden.