Go 服务中使用 database/sql 连接池时,为什么你的连接数总是降不下来
线上一个 Go 写的订单查询服务,每天上午十点高峰过后,MySQL 的活跃连接数一直维持在 200 以上不回落,而实际 QPS 已经掉到个位数。DBA 那边开始告警,说连接数逼近实例上限,再涨就要拒绝新连接了。这个服务用的是标准库 database/sql,没有用 ORM,代码里 db.SetMaxOpenConns(200)、db.SetMaxIdleConns(50) 都设置了,按说空闲连接超过 50 就该被回收。但实际观察 SHOW PROCESSLIST,Sleep 状态的连接长期在 180 到 2...