MySQL 连接数:为什么你的服务器总“Too many connections”?连接池的配置和优化
💡
原文中文,约2800字,阅读约需7分钟。
📝
内容提要
MySQL 连接数查询对性能排查至关重要。可通过命令查看当前连接数、连接列表和最大连接数。大部分连接处于空闲状态,应根据并发情况调整连接池设置,以避免超出最大连接数导致错误。
🎯
关键要点
- 查看 MySQL 当前连接数是排查性能瓶颈和配置连接池的基本功。
- 使用命令 SHOW STATUS LIKE 'Threads_connected' 查看当前打开的连接数。
- 使用命令 SHOW FULL PROCESSLIST 查看详细的连接列表,了解连接状态和持续时间。
- 大部分连接处于 Sleep 状态,说明这些连接是空闲的,没有在执行查询。
- 高并发场景下,默认的 MaxIdleConns 可能不足,需根据实际情况调整连接池设置。
- 使用命令 SHOW STATUS LIKE 'Threads_running' 查看当前正在执行查询的连接数。
- 使用命令 SHOW VARIABLES LIKE 'max_connections' 查看最大连接数限制,默认值为 151。
- 需限制 golang gorm 的最大连接数,避免流量激增时超出数据库限制。
- 使用命令 SHOW STATUS LIKE 'Max_used_connections' 查看历史最高连接数,判断连接池设置是否合理。
- 空闲连接状态占用内存为 2MB ~ 5MB,普通查询连接状态为 5MB ~ 10MB,重度查询连接状态可达 32MB ~ 128MB+。
➡️