MySQL连接数暴增主因是连接未及时释放或无效连接过多,需重点排查空闲连接、慢查询、长事务及应用层连接池配置,并通过调整wait_timeout、限制用户连接数等参数优化。

MySQL连接数暴增,核心是“连接没及时释放”或“不该开的连接开了太多”。重点不是看总数,而是看谁在连、连了多久、干了什么、有没有卡住。
先确认是否真爆了:
SHOW GLOBAL STATUS LIKE 'Threads_connected'; 查;SHOW GLOBAL STATUS LIKE 'Threads_running'; 查;SHOW VARIABLES LIKE 'max_connections';,确认是否接近上限(如 300/300)。执行 SHOW PROCESSLIST; 或更全的 SHOW FULL PROCESSLIST;,重点关注四列:
Sleep(空闲)、Query(正在执行)、Connect(刚连上);wait_timeout(默认 28800 秒=8小时)本该断开,若出现几百上千秒的 Sleep,说明连接泄漏;Sending data、Locked、Updating 等,配合慢查询分析是否被阻塞。慢查询或未提交事务会把连接长期占住:
SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 2;;SELECT * FROM mysql.slow_log ORDER BY start_time DESC LIMIT 10;(需开启日志表);SELECT * FROM information_schema.INNODB_TRX ORDER BY trx_started LIMIT 5;;PROCESSLIST 中 Time 长且 Command 是 Query、State 是 updating 或 locked 的线程,重点优化对应 SQL 或业务逻辑。绝大多数暴增源于应用侧问题:
max_connections?多个服务共用库时是否叠加超限?临时缓解+长期加固:
SET GLOBAL wait_timeout = 600;(10分钟),interactive_timeout 同步调整;ALTER USER 'app_user'@'%' WITH MAX_USER_CONNECTIONS 50;;max_connections,需同步评估内存(每个连接约占用 2–3MB);
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号