Hikari doesnt open more than 10 connections, even when maximumPoolSize and minimumIdle are greater than 10
Author: ApoorvGuptaAiCreated Dec 10, 2023Updated Feb 18, 2026
Scenario:
- HikariCP is configured via spring
- maximumPoolSize is set to 30
- minimumIdle is set to 30 manually (or left unset)
- Traffic is sent to server till we hit 15-25 concurrency, with each request triggering to a SQL request that takes more than a few seconds to execute (90%ile at about 9s)
- Versions: Seems to be broken on both 4.X and 5.1
Expected:
- Hikari opens 30 connections at start, and while requests are being served.
Actual:
- Hikari opens 10 connections at start, and never opens more connections than that even when >10 connections are requested in parallel.
Artifacts:
Log statement showing failures after
[2023-12-09 10:02:24] [HikariPool-1 connection adder] [DEBUG] [HikariPool.java:733] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-1 - Connection add failed, sleeping with backoff: 5000ms
[2023-12-09 10:02:25] [HikariPool-1 housekeeper] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-1 - Pool stats (total=10, active=0, idle=10, waiting=0)
[2023-12-09 10:02:25] [HikariPool-2 housekeeper] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Pool stats (total=10, active=10, idle=0, waiting=0)
[2023-12-09 10:02:25] [HikariPool-2 housekeeper] [DEBUG] [HikariPool.java:510] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Fill pool skipped, pool has sufficient level or currently being filled.
[2023-12-09 10:02:29] [HikariPool-2 connection adder] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Connection not added, stats (total=10, active=10, idle=0, waiting=1)
[2023-12-09 10:02:55] [HikariPool-1 housekeeper] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-1 - Pool stats (total=10, active=0, idle=10, waiting=0)
[2023-12-09 10:02:55] [HikariPool-2 housekeeper] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Pool stats (total=10, active=10, idle=0, waiting=1)
[2023-12-09 10:02:55] [HikariPool-2 housekeeper] [DEBUG] [HikariPool.java:510] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Fill pool skipped, pool has sufficient level or currently being filled.
[2023-12-09 10:02:59] [HikariPool-1 connection adder] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Timeout failure stats (total=10, active=10, idle=0, waiting=0)
[2023-12-09 10:02:59] [HikariPool-1 connection adder] [DEBUG] [HikariPool.java:489] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-1 - Cannot acquire connection from data source
java.sql.SQLTransientConnectionException: HikariPool-2 - Connection is not available, request timed out after 30000ms (total=10, active=10, idle=0, waiting=0)
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:686) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:179) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:144) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:127) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:360) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:461) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:724) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:703) ~[HikariCP-5.1.0.jar!/:?]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
at java.lang.Thread.run(Unknown Source) ~[?:?]
[2023-12-09 10:02:59] [HikariPool-1 connection adder] [DEBUG] [HikariPool.java:733] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-1 - Connection add failed, sleeping with backoff: 5000ms
[2023-12-09 10:03:04] [HikariPool-2 connection adder] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Connection not added, stats (total=10, active=10, idle=0, waiting=1)
[2023-12-09 10:03:25] [HikariPool-1 housekeeper] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-1 - Pool stats (total=10, active=0, idle=10, waiting=0)
[2023-12-09 10:03:25] [HikariPool-2 housekeeper] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Pool stats (total=10, active=10, idle=0, waiting=1)
[2023-12-09 10:03:25] [HikariPool-2 housekeeper] [DEBUG] [HikariPool.java:510] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Fill pool skipped, pool has sufficient level or currently being filled.
[2023-12-09 10:03:34] [HikariPool-1 connection adder] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Timeout failure stats (total=10, active=10, idle=0, waiting=0)
[2023-12-09 10:03:34] [HikariPool-1 connection adder] [DEBUG] [HikariPool.java:489] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-1 - Cannot acquire connection from data source
java.sql.SQLTransientConnectionException: HikariPool-2 - Connection is not available, request timed out after 30000ms (total=10, active=10, idle=0, waiting=0)
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:686) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:179) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:144) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:127) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:360) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:461) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:724) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:703) ~[HikariCP-5.1.0.jar!/:?]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
at java.lang.Thread.run(Unknown Source) ~[?:?]
[2023-12-09 10:03:34] [HikariPool-1 connection adder] [DEBUG] [HikariPool.java:733] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-1 - Connection add failed, sleeping with backoff: 5000ms
[2023-12-09 10:03:39] [HikariPool-2 connection adder] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Connection not added, stats (total=10, active=10, idle=0, waiting=1)
[2023-12-09 10:03:55] [HikariPool-1 housekeeper] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-1 - Pool stats (total=10, active=0, idle=10, waiting=0)
[2023-12-09 10:03:55] [HikariPool-2 housekeeper] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Pool stats (total=10, active=10, idle=0, waiting=1)
[2023-12-09 10:03:55] [HikariPool-2 housekeeper] [DEBUG] [HikariPool.java:510] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Fill pool skipped, pool has sufficient level or currently being filled.
[2023-12-09 10:04:09] [HikariPool-1 connection adder] [DEBUG] [HikariPool.java:405] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-2 - Timeout failure stats (total=10, active=10, idle=0, waiting=0)
[2023-12-09 10:04:09] [HikariPool-1 connection adder] [DEBUG] [HikariPool.java:489] [com.zaxxer.hikari.pool.HikariPool] [tenantId: no_tenant] [requestId: NONE] [deploymentId: truera-on-prem-deployment] HikariPool-1 - Cannot acquire connection from data source
java.sql.SQLTransientConnectionException: HikariPool-2 - Connection is not available, request timed out after 30000ms (total=10, active=10, idle=0, waiting=0)
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:686) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:179) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:144) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:127) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:360) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:461) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:724) ~[HikariCP-5.1.0.jar!/:?]
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:703) ~[HikariCP-5.1.0.jar!/:?]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
at java.lang.Thread.run(Unknown Source) ~[?:?]Source: brettwooldridge/HikariCP