5、查询性能问题
现象:慢查询占用连接时间过长。
解决方案:
启用慢查询日志:
ini
[mysqld]
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1 记录超过1秒的查询
优化慢查询:添加索引、简化复杂关联、避免 `SELECT *`。
三、高级优化策略
1、垂直分库
将大表拆分到不同数据库,减少单库连接压力。
2、读写分离
使用中间件(如 ProxySQL)将读请求分发到从库,减轻主库压力。
3、负载均衡
通过反向代理(如 Nginx)将流量分散到多个 MySQL 实例。
4、监控与告警
使用 Prometheus + Grafana 监控连接数趋势,设置阈值告警。
四、示例应急处理
假设当前连接数已达上限,可执行以下操作:
sql
查找所有空闲连接并终止
SELECT CONCAT('KILL ', id, ';') AS kill_command
FROM information_schema.processlist
WHERE state = 'Sleeping' AND time 600; 终止空闲超过10分钟的连接
五、预防措施
定期分析 `SHOW PROCESSLIST`,识别长期存在的连接。
在部署新应用前,评估其连接模式(如每请求新建连接 vs 连接池复用)。
对于高并发场景,优先使用连接池并限制最大连接数。
通过以上步骤,可有效控制 MySQL 连接数,提升系统稳定性。若问题持续,需结合具体业务场景进一步优化。