[z/OS]

Einstellungen für die MDB-Regulierung unter z/OS

Sie können verschiedene Einstellungen für die "MDB-Regulierung" anpassen, um den Umfang der MDB-Anforderungen, die der Server zu einem bestimmten Zeitpunkt verarbeiten soll, zu steuern.

MDB-Regulierung - oberer und unterer Schwellenwert

Anmerkung: Die Informationen in diesem Artikel gelten für den Fall, dass Sie einen einzelnen Listener-Port eines bestimmten Ziels zuordnen. Obwohl die Schwellenwerte zur Regulierung (Drosselung) für jeden Listener-Port individuell berechnet werden, existiert unabhängig von der Zahl der Listener-Ports für jedes Ziel nur ein einzelner Warteschlangenagent. Wenn beispielsweise die Listener-Ports A und B der Warteschlange Q zugeordnet sind, dann gilt Folgendes: Wenn der Listener-Port B den unteren Schwellenwert erreicht, dann hebt er die Regulierung (Drosselung) des einzelnen Warteschlangenagenten-Thread für die Warteschlange Q auf, obwohl der Listener-Port A möglicherweise bereits seinen oberen Schwellenwert erreicht hat (und daher blockieren würde, wenn die Listener-Ports getrennten Ziele zugeordnet wären). Dies bedeutet insbesondere, dass es nicht möglich ist, mehrere Listener-Ports eines einzelnen Ziels zuzuordnen und für jeden Listener-Port einen hohen Schwellenwert von 1 festzulegen, wenn Sie eine serielle Verarbeitung auf den MDBs auf jedem Listener-Port ausführen möchten. Aufgrund dieser Einschränkung wird dringend empfohlen, einen Listener-Port nur einem Ziel zuzuordnen.

Die Unterstützung der MDB-Regulierung verwaltet die aktuelle Anzahl unvollständiger Nachrichten für die einzelnen Listener-Ports.

Wenn eine Nachrichtenreferenz an den Nachrichtenreferenzhandler gesendet wird, wie im Abschnitt beschrieben, wird die Anzahl der unvollständigen Nachrichten um den Wert 1 erhöht. Im nächsten Schritt wird dieser Wert mit dem oberen Schwellenwert für diesen Listener-Port verglichen.
  • Wenn der Wert für die Anzahl der unvollständigen Nachrichten kleiner-gleich dem oberen Schwellenwert ist, wird ein Arbeitssatz in die WLM-Warteschlange gestellt.
  • Überschreitet der Wert für die Anzahl der unvollständigen Nachrichten den oberen Schwellenwert, wird der Thread des Warteschlangenagenten, der den Nachrichtenreferenzhandler ausführt, blockiert, geht in einen Wartestatus. In diesem Fall spricht man von einer "blockierten" Regulierung.

Der Wert für die Anzahl der unvollständigen Nachrichten wird immer, wenn der Controller benachrichtigt wird, dass ein Arbeitssatz für diesen Listener-Port abgeschlossen ist, um den Wert 1 herabgesetzt (unabhängig davon, ob die Transaktion der Anwendung festgeschrieben wurde). Danach wird der Wert für die Anzahl der unvollständigen Nachrichten mit dem unteren Schwellenwert für diesen Listener-Port verglichen. Wenn die Anzahl der unvollständigen Nachrichten auf den unteren Schwellenwert absinkt, wird der zuvor blockierte Thread des Warteschlangenagenten aktiviert (benachrichtigt). An diesem Punkt können neue Arbeitssätze in die WLM-Warteschlange gestellt werden, und die Regulierung wird "freigegeben".

Der untere und der obere Schwellenwert werden extern durch eine Einstellung bestimmt, den Parameter Maximale Anzahl von Sitzungen für den Listener-Port. Intern wird der obere Schwellenwert auf den extern definierten Wert für Maximale Anzahl von Sitzungen gesetzt. Der untere Schwellenwert wird mit intern mit folgender Formel berechnet und gesetzt: unterer Schwellenwert = (oberer Schwellenwert / 2), wobei der Wert auf das nächste Integer abgerundet wird.

Nehmen Sie beispielsweise an, dass der Parameter für Maximale Anzahl von Sitzungen auf 2 gesetzt ist. Hierbei ist der obere Schwellenwet 2 und der untere Schwellenwert ist 1. Nachfolgend wird eine Zusammnfassung der Verarbeitung aufgeführt:
  • Der Controller beginnt, eine andere Nachricht zu verarbeiten. Der Zähler für unvollständige Nachrichten ist auf 3 gesetzt. Dieser Wert überschreitet den oberen Schwellenwert und führt dazu, dass der Thread des Controllers angehalten wird, bis der niedrigere Schwellenwert erreicht wurde.
  • Die MDB im Servant für die erste Nachricht wird zurückgegeben und der Zähler für unvollständige Nachrichten wird von 3 auf 2 gesenkt. Damit ist jedoch der unterer Schwellenwert noch nicht erreicht.
  • Die MDB im Servant für die zweite Nachricht wird zurückgegeben und der Zähler für unvollständige Nachrichten wird von 2 auf 1 gesenkt. Der untere Schwellenwert wurde erreicht und die Verarbeitung von Nachrichten und die zugehörige Verteilung an die Servantregion wird fortgesetzt.
Die Verwendung eines Parameterwerts von 2 für Maximale Anzahl von Sitzungen bedeutet, dass nach Überschreiten des oberen Schwellenwerts keine Nachrichten mehr verarbeitet werden, bis alle MDBs im Servant vollständig sind.

Wenn der Nachrichten-Listener-Service mit der angepassten Eigenschaft MDB.THROTTLE.THRESHOLD.LOW.EQUALS.HIGH definiert und auf den Wert "true" gesetzt wurde, wird der untere Schwellenwert intern auf den oberen Schwellenwert gesetzt (der extern über die Eigenschaft "Maximale Anzahl von Sitzungen" des Listener-Ports gesetzt wird).

Anmerkung: Es wird ein Thread eines Warteschlangenagenten für jedes Ziel und nicht für jeden Listener-Port erstellt. Wenn zwei Listener-Ports ein- und derselben Warteschlange zugeordnet sind und an einem Listener-Port eine Bedingung eintritt, die die Regulierung blockiert, führt dies dazu, dass auch der Vorgang, bei dem über den zweiten Listener-Port Arbeitssätze in die Warteschlange gestellt werden, blockiert werden. Der zweite Listener-Port wird auch blockiert, wenn er den oberen Schwellenwert noch nicht erreicht hat. Der Einfachheit halber wird ein Ziel nur einem einzigen Listener-Port zugeordnet.

MDB-Regulierung - Hinweise zur Optimierung

Sie sollten den Wert "Maximale Anzahl von Sitzungen" für den Listener-Port so festlegen, dass er doppelt so hoch ist wie die Anzahl der Worker-Threads in allen Servants im skalierbaren Server (2*WT). Wenn Sie Worker-Thread in einem Servant haben, möchten Sie diesen Thread nicht aufgrund einer blockierten MDB-Regulierung inaktiv lassen. Mit anderen Worten, Sie möchten keine leere WLM-Warteschlange, einen verfügbaren Servant-Worker-Thread und eine blockierte Regulierung haben.

Wenn Sie den Wert 2*WT gemäß der Grundempfehlung verwenden, wird eine blockierte Regulierung freigegeben, wenn folgende Bedingungen erfüllt sind:
  • Es gibt einen freien Servant-Worker-Thread.
  • Die WLM-Warteschlange ist leer.
  • Es gibt eine Nachrichtenreferenz, die durchsucht wurde, für die jedoch keine Verarbeitungsanforderung zur WLM-Warteschlange hinzugefügt wurde (stattdessen wurde die Regulierung blockiert).

Wenn Sie den oberen Schwellenwert auf 2*(WT+N) setzen, können Sie außerdem sicherstellen, dass in dem Moment, in dem ein Worker-Thread die Regulierung freigibt, ein Rückstand von N vorverarbeiteten Nachrichten in der WLM-Warteschlange auf die Zuteilung wartet. Ein sehr hoher Wert würde jedoch zu einer Überlastung der WLM-Warteschlange führen, die durch die Regulierung eigentlich verhindert werden sollte. Diese Hinweise zur Optimierung setzen voraus, dass die Warteschlange (oder das Topic) vollständig mit zu verarbeitenden Nachrichten gefüllt ist.

Wenn Sie den oberen Schwellenwert erhöhen, kann der Server einen kleinen Rückstand vorverarbeiteter Nachrichten in der WLM-Warteschlange aufbauen, falls der Workload einen Spitzenwert erreicht. Eine Erhöhung des oberen Schwellenwerts erhöht jedoch auch das Risiko, dass ein Arbeitssatz für eine bestimmte Nachricht das Zeitlimit überschreitet, bevor die Anwendung mit der entsprechenden Nachricht zugeteilt werden kann. Das heißt, der Server könnte das MDB-Zeitlimit überschreiten. Die angegebene Nachricht wird schließlich zurück an den Server geliefert, allerdings erst später, und die Verarbeitung, die bis dahin stattgefunden hat, wäre verloren. Ein sehr hoher Schwellenwert würde die MDB-Regulierungsfunktion effektiv umgehen, was zunächst eine Überlastung der WLM-Warteschlange und dann möglicherweise einen Serverausfall zur Folge hätte.

MDB-Regulierung - Alternative Hinweise zur Optimierung

Obwohl der skalierbare Server mit dem Ziel entworfen wurde, den Durchsatz zu erhöhen, ist es möglich, die Einstellungen für den Listener-Port zu verwenden, um andere Ziele im Rahmen des Workflow-Management zu erreichen.

Beispielsweise garantiert ein hoher Schwellenwert von '1', dass Nachrichten in der Reihenfolge verarbeitet werden, in der sie am Ziel empfangen werden.

Möglicherweise gibt es in einem Business auch weitere wichtige Gründe, Kapazität und andere Faktoren, einen bestimmten Listener-Port auf eine wesentlich niedrigere Parallelität zu beschränken, als der Server eigentlich unterstützt. Dabei handelt es sich zwar um eine unterstützte Konfiguration, die aber dazu führen kann, dass die Regulierung blockiert wird, wenn inaktive Worker-Threads verfügbar sind.

Beispiel für MDB-Regulierung

Nehmen Sie an, Ihr Server ist so konfiguriert, dass der Wert für die maximale Anzahl der Serverinstanzen auf '3' gesetzt ist und das Workload-Profil IOBOUND ausgewählt ist. Sie haben zwei CPUs, daher erstellt WebSphere Application Server in jedem Servant sechs Worker-Threads. Ihre Anwendung (eine einzelne MDB, die einer Warteschlange zugeordnet ist) verarbeitet jede Nachricht relativ schnell (damit das Risiko einer Zeitlimitüberschreitung sinkt), und Sie möchten, dass der gesamte Zeitraum vom Eintreffen einer angegebenen Nachricht in Ihrer MDB bis zum Ende der MDB-Zuteilung für diese Nachricht so kurz wie möglich ist.

Wenn Sie kurze Reaktionszeiten bei Lastspitzen wünschen, müssen Sie sich für einen größeren Rückstand entscheiden. Sie legen den Wert für die maximale Anzahl der Sitzungen für den Listener-Port mit der Formel 100 = 2 * (3 * 6 + 32) fest.

Anmerkung: Jeder Wert, der größer-gleich 36 = 2 * 3 * 6 ist, würde alle verfügbaren Servant-Worker-Threads auslasten. In der Praxis ist es nicht kritisch, den best möglichen "Rückstandsfaktor" auszuwählen. Eine gute Schätzung, aufgerundet auf einen angemessenen ungefähren Wert, ist völlig ausreichend. In diesem Fall könnten Sie beispielsweise den Wert 100 auswählen.

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=cprf_tunezmdb_throttle
Dateiname:cprf_tunezmdb_throttle.html