SQL 如何排查“连接数爆满”Too many connections 的进程来源-SQL

应先查活跃连接而非直接调大max_connections:执行SELECT id,user,host,db,command,time,state,info FROM information_schema.PROCESSLIST WHERE command != ‘Sleep’ ORDER BY time DESC,重点关注time大、command为Query/Execute的连接,并根据host判断来源,再针对性kill或优化连接管理。

怎么查当前所有活跃连接及其来源

MySQL 报 Too many connections 时,第一反应不是调大 max_connections,而是先看谁在占着不放。用管理员账号执行:

SELECT id, user, host, db, command, time, state, info 
FROM information_schema.PROCESSLIST 
WHERE command != 'Sleep' 
ORDER BY time DESC;

重点关注 time 值大的、command 是 Query 或 Execute 的行——它们大概率是慢查询或卡住的事务。注意 host 字段:如果是 192.168.1.100:54321 这种带端口的,说明是短连接频繁建立;如果是 localhost 或 127.0.0.1,可能是本地脚本或定时任务没关连接。

哪些客户端最容易漏关连接导致堆积

PHP 的 mysqli 和 PDO 默认不自动回收连接,Python 的 pymysql、mysql-connector-python 也一样。常见陷阱包括:

  • 脚本里用 try/except 捕获异常但忘了 conn.close()
  • Web 请求处理完没显式关闭连接,依赖 GC(尤其 PHP-FPM 下不可靠)
  • 使用连接池但 max_idle_time 或 max_lifetime 设得过大,空闲连接长期不释放
  • Java 项目用了 HikariCP 却把 maximumPoolSize 设成 200,而数据库只允许 150 连接,结果排队+超时+重试=雪崩

如何快速 kill 掉可疑连接

别直接杀 id,先确认它没在做关键事务:

SELECT trx_id, trx_state, trx_started, trx_query 
FROM information_schema.INNODB_TRX 
WHERE trx_mysql_thread_id = 12345;

如果 trx_state 是 running 且 trx_query 非空,谨慎操作;否则可安全终止:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » SQL 如何排查“连接数爆满”Too many connections 的进程来源-SQL
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4028951+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4028951+
  • 本周更新: 0+
  • 最后更新: 2026-03-16