0
点赞
收藏
分享

微信扫一扫

golang查询数据报错:closing bad idle connection: unexpected read from socket

原因

应用程序在使用驱动的有效空闲连接时候,发现数据库的连接已经失效(因为连接超过wait_timeout时间),用一个失效的连接查数据,所以报错。

解决办法

  1. 将sql驱动SetConnMaxLifetime和SetConnMaxIdleTime设置时间,并且小于数据库的wait_timeout时间(单位秒)。
  2. 调小wait_timeout。

分析

应用程序配置 数据库配置 分析
SetConnMaxLifetime,SetConnMaxIdleTime wait_timeout maxLifeTime=30s,wait_timeout=20s,如果在25s时候查询,由于空闲连接没被释放,那么报错,如果在35s时候查询,会用新的连接,不会报错

查询和设置wait_timeout

show global variables like 'wait_timeout'; set global wait_timeout=20000;

举报

相关推荐

0 条评论