整理悉尼服务器 MySQL 连接数过多导致服务异常的排查实战。
MySQL 连接数过多会拖垮服务。以下是实战。
一、确认现象 - 应用报 Too many connections - 数据库响应变慢 - 连接数持续升高
二、定位 1) SHOW PROCESSLIST 查看连接和状态 2) SHOW STATUS LIKE 'Threads_connected' 3) SHOW VARIABLES LIKE 'max_connections' 4) 查看是否有大量 Sleep 连接
三、常见原因 1) 连接未释放或连接池配置不当 2) 慢查询占用连接 3) 应用连接泄漏 4) 突发流量 5) 长事务
四、处理 - 修正连接池配置(最大连接、超时) - 优化慢查询并加索引 - 排查应用连接泄漏 - 合理调大 max_connections - 终止异常长事务
五、优化 1) 引入连接池复用 2) 读写分离分担压力 3) 热点数据走缓存 4) 监控连接数水位
六、预防 - 连接数告警 - 慢查询监控 - 定期压测
总结:连接数过多要先看 processlist 与慢查询,再从连接池、SQL 和架构逐项优化。