Julia S
Julia S

Reputation: 61

HikariPool-1 – Connection is not available, request timed out after 30000ms

I am using the standard HikariCP implementation in my SpringBoot 2.0.1 application. But after a while I get the same error over and over

HikariPool-1 – Connection is not available, request timed out after 30000ms

I first checked the code if there are any not closed connection or missing Transactional annotations but I did not find anything. I also tried then to increase the pool and decrease the time out in my application.yml but it seems that this does not have any effect.

The weird thing is that HikariCP seems to create only 4 pooled connection and I am not able to override these properties.

HikariPool-1 - Timeout failure stats (total=4, active=4, idle=0, waiting=100)

This is my application.yml file

spring:
  jpa:
    hibernate:
      ddl-auto: update
  datasource:
      hikari:
        maximum-pool-size: 64
        connection-timeout: 5000

Upvotes: 4

Views: 31653

Answers (1)

Ritesh Singh
Ritesh Singh

Reputation: 223

Your application is not able to get the connection within the 30s which is the default connection timeout for HikariCP. There can be reasons for that such as:

  1. The Pool size is small, and the requests take too long to execute (more than 30 s).

Possible explanation is that for e.g your pool size is 1 and your one request/query takes approximately 500ms to execute. suppose you have opened for example approximately 200 concurrent query requests, then there might be a chance that some requests will be timed out. (one request has waited for the 30s but a connection was not available for it).

Disclaimer: Numbers are taken randomly to explain and is not tested.

To solve this you might want to increase the connectionTimeout or increase the pool size. ( Also check for the memory requirements).

In application.properties set the values

   spring.datasource.hikari.minimumIdle=10
   spring.datasource.hikari.maximumPoolSize=10
   spring.datasource.hikari.idleTimeout=120000
   spring.datasource.hikari.maxLifetime=500000

Official Hikari CP documentation link

There can be another reason for this is that your connection is not getting closed properly use try-with-resources to close your connection e.g

        try(Connection c = dataSource.getConnection()) {
        //ToDo: Add your logic statement here
        log.debug("[d] Tenant '{}' added.", tenantId);
   }

Upvotes: 1

Related Questions