繁体   English   中英

Hikari 池连接问题避免数据库访问

[英]Hikari pool connection issue avoid db access

我们有基于微服务的系统,其中一个专用服务执行所有与数据库相关的调用(db-reader)到 MySQL。

db-reader服务的其他服务不时出现开路错误。

我们发现在此期间发生了 Hikari 池连接关闭/打开操作。

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: (连接被驱逐或死亡)

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连接ADDER] DEBUG com.zaxxer.zaxxer.zaxxer.hikari.hikari.pool.pool.pool.hikaripool-- Hikaripool -19- HIKARIPOOL- HIKARIPOOL- HIKARIPOOL-11

db-reader服务配置中,我们有:

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

如日志所示,连接因maxLifetime而关闭,但为什么当一个连接从连接池中断开时其他服务会open circuit (连接池大小为 50)

有没有办法避免这种情况发生?

尝试

设置连接超时(15_000); //15秒

设置空闲超时(60_000); //1分钟

setMaxLifetime(3_00_000); //5分钟

IdleTimeout 可以是零或至少是 MaxLifetime 的一半。

还要检查 framework/vpn/device.network/db 的超时设置,它比您的池超时设置更早关闭连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM