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