Go+Fiber连接MariaDB出现闲置连接重置告警的解决方法
问题解决:Go + MariaDB 连接池 "connection reset by peer" 告警
环境信息
- 技术栈:Go语言、Fiber Web框架、MariaDB 10.6、Debian 11
- 数据库驱动:
github.com/go-sql-driver/mysql
问题现象
调整了以下数据库连接池参数:
db.SetMaxOpenConns(25) db.SetMaxIdleConns(25) db.SetConnMaxLifetime(5 * time.Minute)
无论调大或调小上述参数,每分钟仍会产生1-2条如下告警:
packets.go:123: closing bad idle connection: connection reset by peer
根因与解决方案
排查后发现问题根源是MariaDB的wait_timeout设为20秒、interactive_timeout设为50秒——这两个参数值远小于连接池配置的ConnMaxLifetime(5分钟),导致数据库主动断开了闲置的连接,但连接池还认为这些连接处于可用状态,当尝试复用这些连接时就触发了告警。
调高wait_timeout和interactive_timeout参数后,告警问题彻底解决。
感谢@ysth提供的解决方案。
内容的提问来源于stack exchange,提问作者Ravyar Tahir
相关产品推荐
相关产品推荐

