mysql interactive_timeout 设置不当一例

来源:这里教程网 时间:2026-03-01 16:13:07 作者:

客户数据库报错 :  [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 设置.  否则 出现这个错误,只是早晚跟概率问题了.  

相关推荐