ITPub博客

首页 > 数据库 > MySQL > mysql interactive_timeout 设置不当一例

mysql interactive_timeout 设置不当一例

原创 MySQL 作者:babyyellow 时间:2021-12-07 11:38:41 0 删除 编辑




客户数据库报错 : 



[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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
oracle MySQL Postgresql 专职数据库dba。 系统架构师。 mysql 官方认知dba 。 15年专职dba 经验。 潜意识沟通实证者 心理咨询师。 禅修布道者, 禅修指导员。 禅定实证者。

注册时间:2010-12-02

  • 博文量
    367
  • 访问量
    1908641