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+。
➡️

继续阅读