Monitoring
Threads
Diese Menüebene steht nur Server-Administratoren zur Verfügung. |
Auf dieser Seite befinden sich Informationen zur Überwachung des aktuellen Systemzustands.
Thread Dump: Mit einem Klick auf den Button wird ein aktueller Thread Dump erstellt und angezeigt. Mit einem Klick auf das kann die angezeigte Ebene expandiert werden. Über die Buttons im oberen Fensterbereich kann der aktuelle Thread Dump analysiert und in einer aufbereiteten Ansicht angezeigt werden.
Trace: Ein Klick auf die Schaltfläche gruppiert die aktuellen Threads nach ähnlichen Stacktraces. Stacktraces werden zu einer Gruppe zusammengefasst, wenn sie bis auf die Objektadressen identisch sind. Die Zahl im rechten Bereich zeigt die Anzahl der gefundenen ähnlichen Traces an. Durch die aufbereitete Ansicht kann relativ einfach festgestellt werden, welche Aktionen aktuell auf dem Server stattfinden.
Topline: Ein Klick auf die Schaltfläche gruppiert die aktuellen Threads nach Ähnlichkeiten innerhalb der ersten fünf Zeilen. Ähnliche Threads werden in der aufbereiteten Anzeige zu einem Eintrag zusammengefasst. Die Zahl im rechten Bereich zeigt die Anzahl der gefundenen ähnlichen Threads an. Durch die aufbereitete Ansicht kann relativ einfach festgestellt werden, an welcher Stelle der Ausführung sich die Threads aktuell befinden. Diese Ansicht erleichtert das Aufspüren von Engpässen („Bottlenecks“), beispielsweise wenn viele Threads immer innerhalb einer bestimmten Codestelle warten.
Lock: Ein Klick auf diese Schaltfläche untersucht die aktuellen Threads nach Locks. Befinden sich mehrere Threads im Zustand BLOCKED (siehe unten „Status“), warten diese auf die Freigabe eines Objekts von einem anderen Thread. Befinden sich ständig viele Objekte in einem Wartestatus, bei einer gleichzeitigen geringen Verarbeitungsgeschwindigkeit, kann das ein Indiz für Bottlenecks sein.
Text: Ein Klick auf den Button zeigt den vollständigen unbearbeiteten Thread Dump mit allen Informationen an.
Neben der einzelnen Erstellung eines Thread Dumps können weitere Dumps in bestimmten Zeitintervallen erstellt werden. Dabei können die insgesamt gewünschte Anzahl an Thread Dumps im ersten Feld und die Zeitintervalle im zweiten Eingabefeld eingegeben werden. Ein Klick auf die Schaltfläche Erstellen startet dann die Ausführung.
Tabelle: Die tabellarische Übersicht der Seite zeigt den Zustand der aktuellen Threads. Die hier abgebildeten Thread-Informationen stellen eine Momentaufnahme bzw. ein Ausschnitt des aktuellen Zustands dar:
ID: jeder Thread besitzt eine Thread-ID über die er eindeutig identifizierbar ist.
Name: Name des Threads.
Status: Die Threads können sich in unterschiedlichen Zuständen befinden:
- NEW – neu erzeugter Thread, der noch nicht gestartet wurde.
- RUNNABLE – der Thread wird gerade abgearbeitet oder ist ablaufbereit (wartet auf CPU).
- BLOCKED – der Thread wartet auf die Freigabe eines Locks.
- WAITING – der Thread wartet auf einen anderen Thread, um weiterlaufen zu können.
- TIMED_WAITING – der Thread wartet auf den Ablauf einer festgelegten Zeit (z. B. nach Aufruf von sleep() oder wait() mit Timeout)
- TERMINATED – der Thread ist beendet
IN (In Native): Gibt Auskunft darüber, ob der Thread nativen Code über das Java Native Interface (JNI) ausführt (true) oder nicht (false).
SP (Suspended): Gibt Auskunft darüber, ob ein Thread aktuell gestartet ist (false) oder nicht (true).
BC (Blocked Count): Die Zahl gibt Auskunft darüber, wie oft sich ein Thread während der Ausführung bereits im Status BLOCKED befand.
WC (Waited Count): Die Zahl gibt Auskunft darüber, wie oft sich ein Thread während der Ausführung im bereits Status WAITING befand.
Ein Klick auf einen Thread innerhalb der Tabelle öffnet ein Detailfenster zu diesem Thread. Dort werden alle tabellarischen Informationen übersichtlich aufgelistet und zusätzlich das Lockobjekt und der „Owner“ angezeigt:
Abbildung: Threads – Detailinformation
Lock: Befindet sich ein Thread im Status BLOCKED wartet er auf die Freigabe des hier angegeben Lock-Objekts.
Owner: Befindet sich ein Thread im Status BLOCKED wird der Name des Threads ausgegeben, der aktuell das Lock auf das Objekt hält.
Die weiteren Ausgaben werden innerhalb des aktuellen Abschnitts beschrieben (s.o.).