No operations allowed after connection closed

No operations allowed after connection closed

1. 背景

晚上 21:21 收到小伙伴的服务报警,异常错误如下

异常1
异常1

异常2
异常2

2. 排查

从报错信息上可以看出,异常原因是请求数据库时使用已关闭的连接,即关闭的连接仍然在连接池中存在。

那什么情况会发生连接被关闭呢?

  1. 出现了慢查询超时(socketTimeout),被tcp关闭连接,导致死连接
  2. 连接空闲超时(wait_timeout),MySQL服务端 kill 了连接

产品流量较大,基本上不会发生连接空闲超时的情况,所以初步判断是查询超时导致连接被关掉

查看配置的 socketTimeout ,设置的时长为 60 秒

socketTimeout
socketTimeout

现去查询慢查询日志

执行耗时
执行耗时

基本确定是慢查询导致连接被关闭,将慢 SQL 发给小伙伴后,小伙伴反馈本次上线有与此条 SQL 相关修改。
小伙伴将代码回滚后,问题解决。

posted @ 2020-12-27 19:12  feshfans  阅读(1556)  评论(0编辑  收藏  举报