Systemaspekte bei der Nachrichtenflussentwicklung

Größe des Standardstapelspeichers

Wenn ein Nachrichtenfluss-Thread ausgeführt wird, benötigt er Speicherplatz für die Ausführung der Anweisungen, die von der Logik seiner verbundenen Knoten definiert wurden. Dieser Speicherplatz hängt von der Heap- und Stapelspeichergröße der Ausführungsgruppe ab. Die Größe des Standardstapelspeichers, die einem Nachrichtenfluss-Thread zugeordnet wird, hängt von der verwendeten Plattform ab.

Jedem Nachrichtenfluss-Thread wird ein Stapelspeicherplatz von 1 MB zugeordnet.

Jedem Nachrichtenfluss-Thread wird ein Stapelspeicherplatz von 8 MB zugeordnet.

Jedem Nachrichtenfluss-Thread wird ein Stapelspeicherplatz von 1 MB zugeordnet.

Jedem Nachrichtenfluss-Thread wird ein Abwärtsstapelspeicherplatz von 512 KB und ein Aufwärtsstapelspeicherplatz von 50 KB zugeordnet.

In einem Nachrichtenfluss verwendet ein Knoten für gewöhnlich etwa 2 KB des Stapelspeicherplatzes. Ein typischer Nachrichtenfluss kann daher etwa 250 Knoten unter z/OS, 500 Knoten auf UNIX-Plattformen und 500 Knoten unter Windows enthalten. Abhängig von den verwendeten Knotentypen und der von ihnen ausgeführten Verarbeitung kann diese Anzahl höher oder niedriger sein.

Erhöhung der Stapelspeichergröße auf Windows- und UNIX-Plattformen

Sie können die Stapelspeichergröße erhöhen, indem Sie die Umgebungsvariable MQSI_THREAD_STACK_SIZE auf einen entsprechenden Wert setzen. Wenn Sie Broker erneut starten, die auf dem System ausgeführt werden, verwenden diese den neuen Wert.

Der Wert, den Sie für MQSI_THREAD_STACK_SIZE festlegen, wird für jeden Thread verwendet, der in einem DataFlowEngine-Prozess erstellt wird. Wenn der Ausführungsgruppe viele Nachrichtenflüsse zugeordnet sind und Sie für MQSI_THREAD_STACK_SIZE einen hohen Wert festlegen, benötigt der DataFlowEngine-Prozess daher viel Speicherplatz für den Stapelspeicher.

Erhöhung der Stapelspeichergröße unter z/OS

Die Integrator-Komponenten unter z/OS werden unter Verwendung der neuen Verbindung XPLINKage (zusätzliche Leistungsverbindung) kompiliert, die den Laufzeitcode weiter optimiert. Wenn die Größe des Anfangsstapelspeichers jedoch nicht ausreicht, werden Stapelspeichererweiterungen verwendet. In jeder Erweiterung werden 128 KB verwendet. Es ist sehr wichtig, dass die Größe des Abwärtsstapelspeichers ausreicht, da XPLINK schlechte Leistungen erzielt, wenn Stapelspeichererweiterungen verwendet werden.

Komponentenadministratoren für z/OS können die geeignete Stapelspeichergröße mit Hilfe des LE-Tools für Berichtsspeicher (Language Environment) festlegen. Hierfür muss ein Nachrichtenfluss unter Verwendung der Option RPTSTG mit der _CEE_RUNOPTS-Umgebungsvariable getestet werden. Dieser Vorgang sollte während der Entwicklung und des Tests von Nachrichtenflüssen, die für die Produktion bestimmt sind, im Komponentenprofil (BIPBPROF für einen Broker) durchgeführt werden. Beispiel:
export _CEE_RUNOPTS=XPLINK\(ON\),RPTSTG(ON)
Sie können dann die Standardwerte für die Stapelspeichergrößen unter z/OS überschreiben, indem Sie die LE_CEE_RUNOPTS-Umgebungsvariable im Komponentenprofil ändern oder hinzufügen.

Zur Aktualisierung des Komponentenprofils müssen Sie die Komponente stoppen, die erforderlichen Änderungen am Profil vornehmen, BIPGEN zum erneuten Erstellen von ENVFILE übergeben und die Komponente erneut starten.

Sie können beispielsweise die Standardwerte 50K und 512K in der folgenden Zeile an Ihre Bedürfnisse anpassen:
export _CEE_RUNOPTS=XPLINK(ON),THREADSTACK(ON,50K,15K,ANYWHERE,KEEP,512K,128K)

Durch die Verwendung von RPTSTG erhöht sich die Dauer, die eine Anwendung zur Ausführung benötigt. Aus diesem Grund sollten Sie diese Einstellung nur als Hilfestellung bei der Entwicklung von Nachrichtenflüssen und Ihrer endgültigen Produktionsumgebung einsetzen. Sobald Sie die richtigen erforderlichen Stapelspeichergrößen ermittelt haben, sollten Sie diese Option aus der Umgebungsvariablen _CEE_RUNOPTS entfernen.

Anmerkung: XPLINK-Stapelspeicher nehmen in Bezug auf den virtuellen Speicher nach unten zu, während die alte Standardverbindung nach oben zunimmt. Zur Vermeidung einer Leistungsbeeinträchtigung, die sich aus dem Wechsel zwischen Abwärts- und Aufwärtsstapelspeicherplatz während der Laufzeit ergibt, sollten Sie so oft wie möglich benutzerdefinierte Erweiterungen mit der Option XPLINK kompilieren. Wenn in Ihrem Nachrichtenfluss benutzerdefinierte Erweiterungen verwendet werden, die mit der standardmäßigen Verbindungskonvention kompiliert wurden, müssen Sie für die Größe des Aufwärtsstapelspeichers einen geeigneten Wert festlegen.

Bestimmung der richtigen Stapelspeichergröße

In WebSphere Message Broker kann jede Verarbeitung, bei der eine verschachtelte oder rekursive Verarbeitung involviert ist, zu einer sehr hohen Belegung des Stapelspeichers führen. In folgenden Beispielen kann es beispielsweise erforderlich sein, die Größe des Stapelspeichers zu erhöhen:
  • Wenn ein Nachrichtenfluss eine Nachricht verarbeitet, die viele Wiederholungen oder eine komplexe Verschachtelung enthält.
  • Wenn ein Nachrichtenfluss ESQL-Code ausführt, der rekursiv dieselbe Prozedur oder Funktion aufruft, oder wenn ein Operator (beispielsweise der Verknüpfungsoperator) in einer ESQL-Anweisung wiederholt verwendet wird.
Zugehörige Tasks
Reaktionszeiten von Nachrichtenflüssen optimieren
Zugehörige Verweise
Nachrichtenflüsse
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac00340_