监控报警,应用报错 too many connections,重启应用能好十分钟又满。
先做的是应急:临时调大 max_connections。但这是治标。
查真因:
show processlist 看到大量 Sleep 状态的连接,时间都很长。说明是连接池配置问题,不是慢查询把连接占住了。应用侧连接池参数:
- 最大连接数设成了 100,但实例有 8 个 → 最坏 800
- 空闲连接不回收,idle timeout 设的 30 分钟
调整:
- 单实例连接池降到 20
- idle timeout 改 60 秒
- 加 leak detection,超过 10 秒没归还的打印堆栈
改完连接数稳定在 60 左右。
经验:连接数打满先看 Sleep 占比。Sleep 多 = 池子太大或没回收;Query 多 = 慢查询;两者都有就先解决慢查询。
主楼- 暂无回复
继续逛逛