测试环境最近MySQL老是无缘无故挂掉,查看日志,报错too many connections,通常这个是配置与实际场景不符导致的
show variables like'%max_connections%';
| Variable_name | Value |
| max_connections | 151 |
MySQL5.7.28默认最大连接数是151,但是测试环境并没有做压力测试,所以排除了这种可能性。
临时调整最大连接数也是自欺欺人,那就排查问题,root用户通过
show full processlist;
发现一个新开发的应用占据了很多的连接且都处于sleep状态,在调用上传文件的接口时会增加连接数,初步断定是这部分代码有问题,然后查看代码,发现用gorm时,代码里开启了事务,但是最后没有提交事务,导致连接数占用
另外测试了一下,Callback方法也会释放连接
db.Begin() 会传递连接给 sql.Tx 对象,当该对象的 Commit 或 Rollback 方法被调用时,该连接会返回给连接池。
解决MySQLtoo_many_connections错误
本文探讨了在未进行压力测试的情况下,测试环境MySQL频繁出现too_many_connections错误的原因。通过排查,发现是一个新开发的应用在调用上传文件接口时,由于代码中使用gorm开启事务但未提交,导致大量连接被占用。文章还提到了Callback方法可以释放连接,以及gorm如何在事务结束后将连接返回给连接池。
814

被折叠的 条评论
为什么被折叠?



