Vytvoření JDBC spojení s databazi je drahá operace — na Oracle 200-500 ms. Connection pool drží preddem vytvořena spojení a recykluje je. Tomcat JDBC Pool vs. Commons DBCP — jednoznacne doporučujeme Tomcat pool.
Sizing¶
Příliš malý pool = requesty čekají. Příliš velký = plyvani zdroji na DB serveru. Pro 200 concurrent uzivatelu: 30-50 spojení. maxActive nesmí přesáhnout PROCESSES limit v Oracle.
Connection validation¶
testOnBorrow=true s validationQuery=”SELECT 1 FROM DUAL” overri každé spojení pred použitím. testWhileIdle periodicky ověřuje idle spojení. Zachrání vas pri restartu databaze nebo firewall timeoutech.
Abandoned connections¶
Connection leak = vývojář zapomene zavřít spojení. removeAbandoned=true automaticky detekuje zapomenuta spojení. logAbandoned=true zaloguje stack trace místa alokace.
Monitoring¶
JMX statistiky: NumActive, NumIdle, WaitCount. Pokud NumActive dlouhodobe blíží maxActive = problem.
Pravidla¶
- Vždy pool, nikdy DriverManager.getConnection() v produkci. 2. Validation queries. 3. removeAbandoned. 4. JMX monitoring. 5. Testujte failover.
Potřebujete pomoc s implementací?
Naši experti vám pomohou s návrhem, implementací i provozem. Od architektury po produkci.
Kontaktujte nás