记一次数据库socket read time out问题

young 13 2025-06-12

客户现场反馈出现大量系统异常,查看日志,发现日志中出现大量的数据库报错,报错日志为socket read time out。

起初怀疑是应该有大量的接口访问,导致数据库死锁,经过排查发现并未出现死锁。

现场人员反馈,运维人员说之前链接数高达1300+,于是将druid的监控开启,发现异常时的session数也没有超过50。

又考虑是否存在SQL执行时间过长的情况,将数据库连接池中的超时时间进行增加,并缩短了检查过期链接的时间。

结果发现SQL执行基本都是毫秒级,最长时间一般不超过10秒(仅一次)。

最后去数据库管理部门进行咨询排查,相关人员询问网络管理员后反馈,应用与数据库之间增加了防火墙,但是采用了默认配置,需增加防火墙上对应的长链接配置。

防火墙策略修改之后,系统再无相关异常。

此次问题排查时间耗时3天,由于网络管理相关知识缺乏,导致未能快速定位问题所在,一直在代码层寻找问题,因此进行记录,为以后的问题排查提供思路。