No operations allowed after connection closed
1. 背景
晚上 21:21 收到小伙伴的服务报警,异常错误如下
2. 排查
从报错信息上可以看出,异常原因是请求数据库时使用已关闭的连接,即关闭的连接仍然在连接池中存在。
那什么情况会发生连接被关闭呢?
- 出现了慢查询超时(socketTimeout),被tcp关闭连接,导致死连接
- 连接空闲超时(wait_timeout),MySQL服务端 kill 了连接
产品流量较大,基本上不会发生连接空闲超时的情况,所以初步判断是查询超时导致连接被关掉
查看配置的 socketTimeout ,设置的时长为 60 秒
现去查询慢查询日志
基本确定是慢查询导致连接被关闭,将慢 SQL 发给小伙伴后,小伙伴反馈本次上线有与此条 SQL 相关修改。
小伙伴将代码回滚后,问题解决。