客户数据库报错 :
[code]
2021-12-07T06:44:49.994568+08:00 131299 [Note] Aborted connection 131299 to db: '' user: 'xxx' host: '10.xxxx16' (Got timeout reading communication packets)
[/code]
数据库日志报错:
show global variables like '%timeout%' ;
| interactive_timeout | 1800 |
wait_timeout | 1800
应用连接池 设置的 idle-timeout 也是 1800
那么问题来了.
如果两边时间不一致. 一定会有点差距的.
当两边 做心跳检测的是时候, 最后一次心跳检测还没有完成.
对方的 timeout 来了. 然后直接关闭了当前链接了.
然后 自己这段 还在傻呵呵的等着对方 发送数据包.
然后 就超时了.
应用 跟 数据库端 都会有这个错误.
这种情况下应该怎么处置呢 ?
除非非常繁忙的系统.
我们一般建议 数据库的这个时间, 设置的长一点.
应用的这个时间, 设置的短一点.
一般 应用连接池的 idle-timeout 不要超过 5分钟.
并且 应用的 idle-timeout 一定要小于数据库的 timeout 设置.
否则 出现这个错误,只是早晚跟概率问题了.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/133735/viewspace-2846173/ ,如需转载,请注明出处,否则将追究法律责任。