golang的web项目,帮分析mysql的错误日志输出
1. 运行环境
golang 1.25
windows2012
2. 问题描述?
golang的web项目,每天都有mysql错误日志输出,不知道因为什么,是连接池不够还是连接池失效?
[mysql] 2026/02/23 07:09:21 packets.go:155 write tcp 127.0.0.1:53435->127.0.0.1
wsasend: An established connection was aborted by the software in your host machine.
[mysql] 2026/02/23 07:09:21 connection.go:214 bad connection
关于 LearnKu
有设置心跳吗,保活时间短一点,比如 30 秒
看下你gorm设置的连接的最大存活时间是不是大于mysql服务器设置的超时时间
估计连接没有用连接池吧,每次请求都连接一次,旧得也没释放
问题解决了,日志不再打印报错了,原来是没有设置 SetConnMaxLifetime(),我以为不重要,忽略了它,导致连接复用时间不限制,不知道设置多少合适,特意查看了一下mysql的配置wait_timeout参数,默认是28800秒(8小时),很高,参考了别人的设置时间,有仅设置2分钟的,有设置十几分钟或半小时,爹说爹有理妈说妈有理,不管了,我直接参考数据库的配置wait_timeout参数,设置了5小时。