Richtlinie für die Erkennung von Blockierungen konfigurieren

Die Option zur Erkennung von Blockierungen für WebSphere Application Server ist standardmäßig aktiviert. Sie können eine speziell auf Ihre Anwendungen und Ihre Umgebung abgestimmte Richtlinie für die Erkennung von Blockierungen konfigurieren, so dass potenzielle Blockierungen gemeldet werden und Serverausfälle früher festgestellt werden können. Wenn ein blockierter Thread erkannt wird, benachrichtigt Sie WebSphere Application Server, sodass Sie den Fehler beheben können.

Vorbereitende Schritte

Ein häufiger Fehler in Anwendungen von Java™ Platform, Enterprise Edition (Java EE) ist ein blockierter Thread. Die Ursache für einen blockierten Thread kann ein einfacher Softwarefehler (z. B. eine Endlosschleife) oder ein komplexeres Problem (z. B. eine gegenseitige Ressourcensperre) sein. Eine solche blockierte Transaktion kann Systemressourcen, z. B. CPU-Zeit, verbrauchen, wenn Threads endlosen Codepfaden folgen, so als würde der Code eine Endlosschleife ausführen. Ein System kann aber auch blockieren, obwohl alle Ressourcen verfügbar sind. Dies ist bei einer gegenseitigen Sperre der Fall. Ein System kann ewig in diesem Zustand verminderter Leistung bleiben, wenn das Problem nicht von einem Benutzer oder Überwachungstool gemeldet wird.

Mit der Richtlinie für Erkennung von Blockierungen können Sie angeben, ab wann die Zeit bis zum Abschluss einer Arbeitseinheit als zu lang angesehen wird. Der Thread-Monitor überprüft alle verwalteten Threads im System (z. B. Web-Container-Threads und ORB-Threads). Nicht verwaltete Threads (die von Anwendungen erstellt werden) werden nicht überwacht. Weitere Informationen finden Sie im Artikel Blockierte Threads in Java EE-Anwendungen.

Informationen zu diesem Vorgang

Die Option für die Erkennung von Threadblockierungen ist standardmäßig aktiviert. Gehen Sie wie folgt vor, um die Werte der Richtlinie für die Erkennung von Blockierungen zu ändern oder die Erkennung von Blockierungen vollständig zu inaktivieren:

Vorgehensweise

  1. Klicken Sie in der Administrationskonsole auf Server > Anwendungsserver > Servername.
  2. Klicken Sie unter "Serverinfrastruktur" auf Verwaltung > Angepasste Eigenschaften.
  3. Klicken Sie auf Neu.
  4. Fügen Sie die folgenden Eigenschaften hinzu:
    Information Beschreibung
    Name com.ibm.websphere.threadmonitor.interval
    Wert Das Intervall in Sekunden, in dem verwaltete Threads im ausgewählten Anwendungsserver abgefragt werden.
    Standardwert 180 Sekunden (drei Minuten).
    Information Beschreibung
    Name com.ibm.websphere.threadmonitor.threshold
    Wert Die Zeit in Sekunden, ein Thread aktiv sein kann, bis er als blockiert eingestuft wird. Alle Threads, deren Aktivitätsdauer diesen Wert überschreitet, werden als blockiert gemeldet.
    Standardwert 600 Sekunden (zehn Minuten)
    Information Beschreibung
    Name com.ibm.websphere.threadmonitor.false.alarm.threshold
    Wert Die Anzahl (T) falscher Alarme, die ausgegeben werden können, bevor der Schwellenwert automatisch erhöht wird. Es ist möglich, dass ein als blockiert gemeldeter Thread seine Arbeit schließlich doch abschließt, was zu einem falschen Alarm führt. Sollten sehr viele solcher Ereignisse eintreten, ist dies ein Indiz für einen zu kleinen Schwellenwert. Die Funktion für die Erkennung von Blockierungen kann automatisch auf diese Situation reagieren: Nach jeweils T falschen Alarmen, wird der Schwellenwert T um einen Faktor von je 1,5 erhöht. Wenn Sie dieses Attribut auf null (oder einen kleineren Wert) setzen, wird die automatische Anpassung inaktiviert.
    Standardwert 100
    Information Beschreibung
    Name com.ibm.websphere.threadmonitor.dump.java
    Wert

    Diese Eigenschaft ruft die Funktion dumpThreads auf. Setzen Sie die Eigenschaft auf true, damit die Funktion dumpThreads ausgeführt wird, wenn ein blockierter Thread erkannt und eine Nachricht vom Typ WSVR0605W ausgegeben wird. Der Abschnitt zu den Threads im Java-Kernspeicherauszug kann analysiert werden, um den Status des gemeldeten Threads und anderer zugehöriger Threads zu bestimmen.

    Setzen Sie die Eigenschaft auf einen ganzzahligen Wert im Bereich 1 bis Integer.MAX_VALUE, damit die Funktion dumpThreads ausgeführt wird, wenn ein blockierter Thread erkannt und eine Nachricht vom Typ WSVR0605W ausgegeben wird. Der ganzzahlige Wert gibt an, wie oft dumpThreads maximal ausgeführt wird.
    Anmerkung: Wenn Sie die Nachrichten des Typs WSVR0605W inaktivieren möchten, setzen Sie die Einstellung com.ibm.websphere.threadmonitor.interval=0.

    [AIX Solaris HP-UX Linux Windows][IBM i]Standardmäßig erzeugt die Funktion dumpThreads einen Auszug des Java-Kernspeichers (Java-Core-Dump). Informationen dazu, wie Sie das Erzeugen dieses Speicherauszugs inaktivieren können, finden Sie im Artikel Speicherauszüge von Threads in Serverprozessen mit Scripting erstellen. Weitere Informationen zum Inhalt und zu den Auswirkungen dieses Speicherauszugs finden Sie in der Java-Diagnosedokumentation.

    [z/OS]Standardmäßig erzeugt die Funktion dumpThreads einen Auszug des Java-Kernspeichers, einen Heapspeicherauszug und einen TDUMP. Informationen dazu, wie Sie das Erzeugen dieser Speicherauszüge inaktivieren können, finden Sie im Artikel Speicherauszüge von Threads in Serverprozessen mit Scripting erstellen. Weitere Informationen zum Inhalt und zu den Auswirkungen dieser Speicherauszüge finden Sie in der Java-Diagnosedokumentation.

    Standardwert false (0)
    Information Beschreibung
    Name com.ibm.websphere.threadmonitor.dump.java.track
    Wert

    Diese Eigenschaft gibt an, wie oft der Monitor die Funktion dumpThreads aufruft, während ein Thread blockiert bleibt.

    Setzen Sie die Eigenschaft auf einen ganzzahligen Wert im Bereich von 2 bis zum Wert von com.ibm.websphere.threadmonitor.dump.java. Das hat zur Folge, dass die Funktion dumpThreads in nachfolgenden Monitorintervallen ausgeführt wird, wenn ein Thread blockiert ist. Der ganzzahlige Wert gibt an, wie oft dumpThreads maximal ausgeführt wird, um einen blockierten Thread zu verfolgen. Beispielsweise bewirkt der Wert 2, dass der Thread-Monitor die Funktion dumpThreads höchstens zweimal für einen blockierten Thread ausführt sowie einmal, wenn der Thread anfänglich als blockiert erkannt wird. Der Thread-Monitor kann dumpThreadsand noch einmal ausführen, wenn der Thread im nächsten Intervall des Thread-Monitors immer noch blockiert ist.

    Diese Eigenschaftkann nur in Verbindung mit der Eigenschaft com.ibm.websphere.threadmonitor.dump.java verwendet werden.

    Standardwert (0) Intervalle
  5. Optional: Wenn Sie die Aktivität von Threads überwachen möchten, für die Systemalarme ausgeführt werden, fügen Sie den Servereinstellungen die folgenden generischen JVM-Argumente hinzu.
    Information Beschreibung
    Name -Dcom.ibm.websphere.alarmthreadmonitor.generate.javacore
    Wert Setzen Sie die Eigenschaft auf einen beliebigen Wert, damit ein Auszug des Java-Kernspeichers erstellt wird, wenn ein blockierter Systemalarmthread erkannt wird. Der Abschnitt zu den Threads im Java-Kernspeicherauszug kann analysiert werden, um den Status des gemeldeten Threads und anderer zugehöriger Threads zu bestimmen.
    Standardwert Nicht zugewiesen
    Information Beschreibung
    Name com.ibm.websphere.alarmthreadmonitor.checkinterval.millis
    Wert Die Häufigkeit (in Millisekunden), mit der Systemalarmthreads abgefragt werden. Setzen Sie den Wert auf null, um die Erkennung blockierter Systemalarmthreads zu inaktivieren. Das maximale Intervall beträgt 600.000 (10 Minuten).
    Standardwert 10000 (10 Sekunden)
    Information Beschreibung
    Name -Dcom.ibm.websphere.alarmthreadmonitor.threshold.millis
    Wert Setzen Sie diese Eigenschaft auf einen beliebigen ganzzahligen Wert zwischen 10.000 und 600.000 (10 Minuten). Mit diesem Argument wird die Zeit (in Millisekunden) angegeben, in der ein Systemalarmthread aktiv sein kann, bis er als nicht reagierend eingestuft wird. Alle Systemalarmthreads, deren Inaktivitätsdauer diesen Wert überschreitet, werden als blockiert gemeldet.
    Standardwert 10000 (10 Sekunden)

    Führen Sie die folgenden Aktionen aus, um diese Argumente den Servereinstellungen hinzuzufügen:

    1. Klicken Sie auf der Seite mit den Servereinstellungen in der Administrationskonsole unter "Serverinfrastruktur" auf Java- und Prozessverwaltung > Prozessdefinition.
    2. [z/OS]Wählen Sie Steuerung aus.
    3. Wählen Sie Java Virtual Machine aus.
    4. Fügen Sie die Argumente dem Abschnitt für die generischen JVM-Argumente hinzu.
  6. Klicken Sie auf Anwenden.
  7. Klicken Sie auf OK.
  8. Speichern Sie die Änderungen. Führen Sie vor dem Neustart der Server unbedingt eine Dateisynchronisation durch.
  9. Starten Sie den Application Server neu, damit die Änderungen in Kraft treten.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



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