[英]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.