Blockierte Threads in Java EE-Anwendungen

WebSphere Application Server überwacht die Aktivität der Threads und führt Diagnoseaktionen aus, falls einer von ihnen inaktiv wird.

Wenn WebSphere Application Server erkennt, dass ein Thread länger aktiv ist als mit dem Schwellenwert des Thread-Monitors definiert ist, werden die folgenden Maßnahmen ergriffen:
  • Eine Warnung wird in der Protokolldatei von WebSphere Application Server protokolliert. Diese Warnung enthält den Namen des blockierten Thread und gibt an, wie lange er bereits aktiv ist. Folgende Nachricht wird in das Protokoll geschrieben:
    WSVR0605W: Der Thread Thread-Name ist seit Zeitangabe aktiv und möglicherweise blockiert. Es sind Summe der Threads Threads
    im Server vorhanden, die möglicherweise blockiert sind.
    Thread-Name steht dabei für den Namen, der im JVM-Thread-Speicherauszug angezeigt wird, Zeitangabe zeigt an, seit wann der Thread aktiv ist und Gesamtzahl_der_Threads gibt die Gesamtheit der System-Threads an.
  • Eine JMX-Benachrichtigung (Java™ Management Extensions) wird abgesetzt. Durch diese Benachrichtigung können Tools von anderen Anbietern das Ereignis abfangen und entsprechende Maßnahmen ergreifen, z. B. die Erstellung eines JVM-Thread-Speicherauszugs für den Server auslösen oder das Absetzen einer elektronischen Seite oder E-Mail. In der Klasse com.ibm.websphere.management.NotificationConstants sind die folgenden JMX-Benachrichtigungsereignisse definiert:
    • TYPE_THREAD_MONITOR_THREAD_HUNG - Dieses Ereignis wird ausgelöst, wenn ein (potenziell) blockierter Thread bemerkt wird.
    • TYPE_THREAD_MONITOR_THREAD_CLEAR - Dieses Ereignis wird ausgelöst, wenn ein zuvor als blockiert gemeldeter Thread seine Arbeit abgeschlossen hat. Nähere Informationen hierzu finden Sie im Abschnitt über Fehlalarme.
  • Es werden Änderungen an den Datenzählern der Performance Monitoring Infrastructure (PMI) ausgelöst. Diese PMI-Datenzähler werden von verschiedenen Tools wie Tivoli Performance Viewer für die Leistungsanalyse verwendet.
  • Es werden Änderungen an den Datenzählern der Performance Monitoring Infrastructure (PMI) ausgelöst. Diese PMI-Datenzähler werden von verschiedenen Tools wie Tivoli Performance Viewer für die Leistungsanalyse verwendet.

Fehlalarme

Wenn die Aufgaben tatsächlich abgeschlossen werden, wird eine zweite Gruppe von Nachrichten, Benachrichtigungen und PMI-Ereignissen erzeugt, um auf den Fehlalarm hinzuweisen. Folgende Nachricht wird in das Protokoll geschrieben:
WSVR0606W: Es wurde zuvor berichtet, dass der Thread Thread-Name blockiert
sei, aber er wurde ausgeführt. Der Thread war ungefähr
Zeit der Blockierung aktiv. Es sind Gesamtzahl_der_Threads insgesamt im Server vorhanden, die
möglicherweise immer noch blockiert sind.
Hier steht Thread-Name für den Namen, der in einem JVM-Thread-Speicherauszug angezeigt wird, Zeit der Blockierung für die ungefähre Zeit, die der Thread aktiv ist, und Summe der Threads für die Bewertung der System-Threads.

Automatische Anpassung des Schwellenwerts für die Blockierungszeit

Wenn der Thread-Monitor (anhand der Paare von HUNG- und CLEAR-Meldungen) feststellt, dass zu viele Fehlalarme ausgelöst werden, kann er den Schwellenwert automatisch anpassen. Wenn es diese Anpassung vornimmt, wird die folgende Nachricht in das Protokoll geschrieben:
WSVR0607W: Es wurden fälschlicherweise zu viele Thread-Blockierungen berichtet. Der Schwellenwert
für Blockierung wird jetzt auf Zeitangabe gesetzt.
Hier steht Zeitangabe für Schwellenwert für die Zeit in Sekunden, die ein Thread aktiv sein kann, bevor er als blockiert angesehen wird.

Sie können verhindern, dass WebSphere Application Server den Schwellenwert für die Blockierungszeit automatisch anpasst. Nähere Informationen hierzu finden Sie im Artikel Richtlinie für die Erkennung von Blockierungen konfigurieren.

Systemalarme

Ein Anwendungsserver überwacht die Aktivität von Threads, in denen Systemalarme ausgeführt werden. Wenn ein Systemalarmthread länger aktiv ist als mit dem Schwellenwert des Alarmthreadmonitors definiert ist, protokolliert der Anwendungsserver die folgende Warnung im Systemprotokoll. Diese Nachricht zeigt den Namen des Threads an, der nicht antwortet, den Zeitraum, über den der Thread bereits aktiv war, und den Ausnahmebedingungsstack des Threads, in dem die Systemkomponente angegeben ist.

UTLS0008W: Der Alarmthread Threadname ist seit n
   Millisekunden aktiv und möglicherweise blockiert. Gesamtzahl_der_ThreadsThread-Stack  

In dieser Nachricht steht Threadname für den Namen, der im JVM-Threadspeicherauszug angezeigt wird, n zeigt an, wie lange der Thread ungefähr aktiv war, Gesamtzahl_der_Threads gibt die Gesamtheit der Systemthreads an und Thread-Stack ist der Ausnahmebedingungsstack des Threads.

Nach Beendigung der Alarmverarbeitung wird die folgende Nachricht in das Systemprotokoll geschrieben. Diese Nachricht gibt den Thread an, der den Fehlalarm ausgelöst hat.

UTLS0009W: Es wurde zuvor berichtet, dass der Alarmthread Threadname blockiert sei,
   aber er wurde ausgeführt. Der Thread war ungefähr n Millisekunden aktiv. 

In dieser Nachricht steht Threadname für den Namen, der im JVM-Threadspeicherauszug angezeigt wird, und n zeigt an, wie lange der Thread ungefähr aktiv war.

Normalerweise verarbeiten Systemalarme keine Lastspitzen, weil diese Aktivität die Verarbeitung nachfolgender Systemalarme verlangsamen könnte, was sich wiederum auf das Serververhalten auswirken könnte. Die Nachricht UTLS0008W soll den Mitarbeitern des IBM Support bei der Untersuchung von Problemen helfen, die möglicherweise durch das Systemalarmverhalten verursacht werden.

Alle Systemalarme verwenden einen allgemeinen Alarm-Thread-Pool gemeinsam. Die Eigenschaften, die die Überwachung dieses Thread-Pools regeln, können mithilfe der Administrationskonsole optimiert werden. Sie können die Frequenz, mit der WebSphere Nachrichten wegen blockierter Alarmthreads generiert, durch eine Änderung des Prüfintervalls bzw. Schwellenwerts für Alarmthreads verringern. Die Änderung dieser Einstellungen wird im Abschnitt Richtlinie für die Erkennung von Blockierungen konfigurieren beschrieben.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=ctrb_hangdetection
Dateiname:ctrb_hangdetection.html