记一次生产数据库连接超时问题排查

背景

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)等参数后重新部署,但是正常了一天后,又再次报错了

其中另一点疑惑是,另一台服务器上的应用一直是正常运行的

问题定位

在一次次修改参数,优化代码后,问题依然存在,考虑到可能不是应用端出现的问题,排查数据库侧的超时时间等参数,也均属于正常范围

后续在询问运维老师后了解到,应用到数据库之间存在防火墙,网络虽然通,但是并没有开通长链接,在申请开通长链接后,问题暂时解决(需要继续观察)

 

posted @ 2023-11-03 14:32  糖醋小灰  阅读(165)  评论(0)    收藏  举报