Sachith Muhandiram
Sachith Muhandiram

Reputation: 2972

Hikari pool connection issue avoid db access

We have microservice based system where one dedicated service does all db related calls (db-reader) to MySQL.

There are open circuit errors in other service to db-reader service time to time.

We found there are Hikari pool connection closing/opening operations happened during this time period.

08:39:25.312 2022-03-28 08:39:25,311 [HikariPool-19 connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - HikariPool-19 - Closing connection com.mysql.cj.jdbc.ConnectionImpl@66fd15ad: (connection is evicted or dead)

2022-03-28 08:58:25,396 [HikariPool-19 connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - HikariPool-19 - Closing connection com.mysql.cj.jdbc.ConnectionImpl@413992c9: (connection has passed maxLifetime)

08:58:25.400 2022-03-28 08:58:25,399 [HikariPool-19 connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - HikariPool-19 - Added connection com.mysql.cj.jdbc.ConnectionImpl@759ad492

In db-reader service configurations we have :

hikariConfig.setConnectionTimeout(30000);
hikariConfig.setIdleTimeout(35000);
hikariConfig.setMaxLifetime(45000);

As log suggest, connections are closed due to maxLifetime, but why other services get open circuit when one connection is dead from connection pool? (connection pool size is 50)

Is there a way to avoid this happening?

Upvotes: 0

Views: 3037

Answers (1)

Nitin
Nitin

Reputation: 1660

try

setConnectionTimeout(15_000); //15sec

setIdleTimeout(60_000); //1min

setMaxLifetime(3_00_000); //5min

IdleTimeout can be zero OR atleast half of MaxLifetime.

also check timeout setting of framework/vpn/device/network/db that closes the connection earlier than your pool timeout setting.

Upvotes: 2

Related Questions