Das Erstellen einer JDBC-Verbindung zu einer Datenbank ist eine teure Operation — bei Oracle dauert es 200–500 ms. Ein Connection Pool hält vorab erstellte Verbindungen bereit und recycelt sie. Tomcat JDBC Pool vs. Commons DBCP — wir empfehlen eindeutig den Tomcat Pool.
Sizing¶
Ein zu kleiner Pool bedeutet wartende Anfragen. Ein zu großer Pool verschwendet Ressourcen auf dem DB-Server. Für 200 gleichzeitige Benutzer: 30–50 Verbindungen. maxActive darf das PROCESSES-Limit in Oracle nicht überschreiten.
Connection-Validierung¶
testOnBorrow=true mit validationQuery="SELECT 1 FROM DUAL" überprüft jede Verbindung vor der Verwendung. testWhileIdle prüft periodisch idle Verbindungen. Das rettet Sie nach einem Datenbank-Neustart oder Firewall-Timeout.
Vergessene Verbindungen¶
Ein Connection Leak entsteht, wenn ein Entwickler vergisst, eine Verbindung zu schließen. removeAbandoned=true erkennt automatisch vergessene Verbindungen. logAbandoned=true protokolliert den Stack Trace der Allokationsstelle.
Monitoring¶
JMX-Statistiken: NumActive, NumIdle, WaitCount. Wenn NumActive dauerhaft nahe an maxActive liegt — gibt es ein Problem.
Regeln¶
- Immer einen Pool verwenden, niemals
DriverManager.getConnection()in Produktion. 2. Validation Queries verwenden. 3.removeAbandonedaktivieren. 4. JMX-Monitoring einrichten. 5. Failover testen.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns