FACHWISSEN · TECHNIK & SICHERHEITINSIGHTS · TECHNOLOGY & SECURITY
Datenbankverbindungen: Warum freie CPU einen erschöpften Verbindungspool nicht ausschließtDatabase connections: why spare CPU does not rule out an exhausted connection pool

Eine Anwendung wartet auf Datenbankzugriffe, obwohl die Prozessorauslastung gering erscheint. Die Ursache kann eine begrenzte Zahl verfügbarer Verbindungen sein. Die Rechenleistung und die Verfügbarkeit einer Verbindung sind unterschiedliche Ressourcen. Eine Diagnose sollte deshalb nicht ausschließlich auf die CPU-Anzeige schauen.
Wartezeit vor der Abfrage sichtbar machen
Ein Verbindungspool hält nutzbare Verbindungen bereit und verteilt sie an Aufrufer. Sind alle belegt, können weitere Aufrufer je nach Implementierung warten oder mit einem Fehler abbrechen. Diese Zeit entsteht möglicherweise schon vor dem eigentlichen Datenbankbefehl. Eine reine Messung der Abfragedauer würde sie dann nicht vollständig erfassen.
Belegte Verbindungen haben unterschiedliche Ursachen
Eine langsame Abfrage, eine lange Transaktion oder eine nicht zurückgegebene Verbindung kann einen Platz länger binden als vorgesehen. Die richtige Maßnahme richtet sich nach der Ursache. Ein fiktives Team vergleicht deshalb aktive Verbindungen, Poolwartezeit und Dauer der Nutzung, statt zuerst das Limit pauschal zu erhöhen.
Mehr Instanzen verändern die Gesamtsumme
Hat jede Anwendungsinstanz ihren eigenen Pool, kann eine höhere Instanzzahl auch mehr mögliche Datenbankverbindungen erzeugen. Ein lokales Limit wird dadurch nicht automatisch zu einem wirksamen Gesamtlimit. Poolgröße, Servergrenzen und weitere Verbraucher werden gemeinsam betrachtet. Reserven für Administration oder Störungsbearbeitung können zusätzlich relevant sein, abhängig von der konkreten Plattform.
Fehlerpfade und Rückgabe testen
Auch nach einer Ausnahme oder einem Zeitlimit müssen Verbindungen entsprechend dem verwendeten Verfahren korrekt zurückgegeben werden. Ein Lasttest sollte deshalb Fehler und lange Vorgänge einschließen. Ein größeres Limit kann kurzfristig Wartezeit verlagern, aber auch die Datenbank zusätzlich belasten. Ein belastbarer Nachweis verbindet die Beobachtung des Pools mit der tatsächlich erreichbaren fachlichen Antwortzeit und erklärt, an welcher Stelle die Begrenzung wirkt.
An application waits for database access while processor utilisation appears low. A limited number of available connections may be the cause. Compute capacity and connection availability are different resources. Diagnosis should therefore go beyond the CPU chart.
Expose waiting before the query
A connection pool maintains reusable connections and allocates them to callers. When all are occupied, additional callers may wait or fail, depending on implementation. This delay may occur before a database command begins. Measuring only query execution time would then leave part of the user-visible delay unexplained.
Occupied connections have different causes
A slow query, long transaction or connection that was not returned can occupy a slot longer than intended. Appropriate action depends on the cause. A fictional team therefore compares active connections, pool waiting and time held, rather than first increasing the limit indiscriminately. This makes the underlying constraint more visible.
More instances change the total
When every application instance has its own pool, additional instances may create more potential database connections. A local limit does not automatically become an effective global limit. Consider pool sizes, server limits and other consumers together. Depending on the platform, reserved administrative capacity may also matter when diagnosing or recovering from a failure.
Test failure paths and release
Connections need to be returned correctly under the chosen mechanism after exceptions and timeouts too. Load tests should therefore include failures and long operations. Increasing a limit can move waiting elsewhere while placing extra pressure on the database. Dependable evidence connects pool behaviour with business response time and explains where the actual constraint applies.