MySQL 连接数满了怎么办
Linux系统
2026-10-12 05:47
5
max_connections 打满,应用全线报错。同一件事有很多种做法,选哪种取决于你的系统版本和线上是否允许中断。
下面按“先判断范围、再处理、最后防复发”的顺序展开,涉及 连接数、too many connections 的关键动作都给了具体做法,可以照着走。
看现状
show status like 'Threads_connected'。
需要留痕的操作,把时间点和现象一起记下来,复盘时最有用。
临时提
set global max_connections 立即生效。
容易踩的坑:另一个坑是照抄别人的参数,环境不同,参数就该重新算。
找原因
show processlist 看是否有大量 Sleep 连接。
需要留痕的操作,把时间点和现象一起记下来,复盘时最有用。
根治
连接池复用、缩短 wait_timeout、查未关闭连接。
速查表
| 环节 | 关键动作 |
|---|---|
| 看现状 | show status like 'Threads_connected' |
| 临时提 | set global max_connections 立即生效 |
| 找原因 | show processlist 看是否有大量 Sleep 连接 |
| 根治 | 连接池复用、缩短 wait_timeout、查未关闭连接 |
常见问题
Q:连接数这类问题,最快的判断办法是什么?
先确认现象的范围:只有单台还是全部、只在某个时段还是持续。范围一缩小,原因基本就浮出来了。
Q:按文中的步骤做完,还需要注意什么?
把处理过程和最终生效的参数记下来。同类问题再出现时直接对照记录,比重查一遍快得多。
小结
回到这篇的四个环节:看现状、临时提、找原因、根治。命令行操作贵在可复现:把有效的命令记进运维笔记,比记在脑子里靠谱。