背景
Spring Boot 2.0.8 + Hikari + Oracle
历史项目,很久没维护了,生产上正常运行两年有余,双活架构,突然有一天其中一台后端服务器数据库连接池报错:
SQL Error:0,SQLState:08006
SQL Error:17002,SQLState:08006
JDBCConnectionException:Unable to acquire JDBC Connection
初步排查
初步认为是连接池超时时间,或者某个参数出问题了,由于生产业务量增加,导致一直获取不到数据库连接导致超时了
有一点疑惑的是,hikari默认max-lifetime应该是1800000(30分钟),但后台日志中除了这个数字,还有9000000ms
第一次在修改最大连接池数量(maximum-pool-size)与探活周期(keepalive-time)等参数后重新部署,但是正常了一天后,又再次报错了
其中另一点疑惑是,另一台服务器上的应用一直是正常运行的
问题定位
在一次次修改参数,优化代码后,问题依然存在,考虑到可能不是应用端出现的问题,排查数据库侧的超时时间等参数,也均属于正常范围
后续在询问运维老师后了解到,应用到数据库之间存在防火墙,网络虽然通,但是并没有开通长链接,在申请开通长链接后,问题暂时解决(需要继续观察)
标签:数据库,问题,排查,参数,超时,连接池 From: https://www.cnblogs.com/sefuture/p/17807553.html