故障现象
ERROR 1040 (HY000): Too many connections- 所有新请求立即失败,现有连接可能正常
- 监控显示
Threads_connected=max_connections
常见根因
- 应用连接池配置过大或存在连接泄露
max_connections设置偏低- 慢查询堆积导致连接长时间占用
- 未关闭的事务持续占用连接
解决步骤
- 紧急:使用 root 的预留连接登录(max_connections+1 的超级用户通道)
mysql -uroot -p --connect-timeout=5
- 查看当前连接状态
SHOW STATUS LIKE 'Threads_connected'; SHOW PROCESSLIST; -- 或更详细 SELECT user, host, command, time, state, info FROM information_schema.PROCESSLIST ORDER BY time DESC LIMIT 50;
- Kill 空闲/长时间运行的连接
-- 批量生成 kill 语句 SELECT CONCAT('KILL ', id, ';') FROM information_schema.PROCESSLIST WHERE command = 'Sleep' AND time > 300;
- 在线调大 max_connections(需确认内存)
SET GLOBAL max_connections = 2000;
- 根治:配置应用连接池最大连接数,修复连接泄露,增加连接有效性检测