Status: verifiziert, dass die Konfiguration syntaktisch korrekt ist und der Server sie anstandslos übernimmt (kein Config-Fehler/-Warning im Log). Nicht verifiziert: das tatsächliche Verhalten unter Last (dafür fehlt ein Lasttest in diesem Projekt) — bewusst transparent, weil "Pool-Größe X ist optimal" ohne echte Lastmessung reine Behauptung wäre.
<executor><executor id="default" name="Default Executor" coreThreads="10" maxThreads="50"/>
So konfiguriert in
concordia-portal/src/main/liberty/config/server.xml.
Ohne dieses Element verwendet Liberty einen intern berechneten Default (an CPU-Kernzahl
gekoppelt) — für Produktion explizit zu setzen ist der richtige Reflex, aus zwei Gründen:
maxThreads begrenzt, wie viele Anfragen gleichzeitig bearbeitet
werden — ohne Obergrenze kann ein Lastspitzen-Szenario den Server (und dahinterliegende
Ressourcen wie DB2-Connections, siehe unten) überrennen, statt kontrolliert Anfragen in eine
Warteschlange zu stellen.Verifiziert: Server mit dieser expliziten Config gestartet, kein CWWKG0083W (ungültiges
Attribut) oder ähnliche Warnung im Log, /health weiterhin mit 200 erreichbar — die Config wird
also syntaktisch korrekt angenommen.
<connectionManager>Aus docs/40-bindeglied-dev-ops-db2-netzwerk/02-der-bindeglied-prozess.md
(dort mit vollem DB2-Kontext):
<connectionManager id="coreBankingConnMgr" maxPoolSize="10" minPoolSize="2"/>
Der entscheidende Unterschied zum Thread-Pool: bei einer Verbindung zu DB2 for z/OS ist eine
großzügige Poolgröße nicht einfach "mehr Puffer", sondern potenziell ein Kostenfaktor
(MSU-Verbrauch, WLM-Klassifizierung) — siehe
docs/40-bindeglied-dev-ops-db2-netzwerk/01-db2-fuer-zos-und-mainframe-grundlagen.md.
Ein WAS-Admin sollte diese beiden Pool-Arten deshalb bewusst unterschiedlich behandeln:
Thread-Pool (<executor>) |
Connection-Pool zu DB2 for z/OS | |
|---|---|---|
| Kostet zusätzliche Größe etwas? | Nein (nur Speicher/CPU lokal) | Potenziell ja (Mainframe-Kapazität) |
| Wer legt die Größe fest? | WAS-Admin allein | WAS-Admin gemeinsam mit dem DB2-Team |
| Typischer Fehler bei falscher Größe | Anfragen warten in der Queue (Latenz) | Verbindungsaufbau schlägt fehl / Timeout, siehe SQLCODE -30081-Fall in Doc 01 |
Kein Ersatz für echten Lasttest, aber als Ausgangspunkt für ein erstes sinnvolles Sizing:
02-heap-und-thread-dumps.md —
erst messen (Thread-Dump: wie viele Threads warten wirklich auf Pool-Kapazität?), dann
anpassen, nicht umgekehrt raten.