MySQL 最大连接数(
max_connections)默认通常为 151,对小流量应用够用,但高并发场景下容易出现“Too many connections”错误。调整它需兼顾服务器资源与业务需求,不能盲目设得过高。
查看当前最大连接数和实际使用情况
登录 MySQL 后执行以下命令确认现状:
查看当前设置:
SHOW VARIABLES LIKE 'max_connections';
查看当前活跃连接数:
SHOW STATUS LIKE 'Threads_connected';
查看历史峰值(重启后清零):
SHOW STATUS LIKE 'Threads_created';
该值持续上升说明连接复用不足,可能需配合应用层连接池优化。
临时修改(重启失效)
适用于测试或紧急调整,立即生效但不持久:
执行:SET GLOBAL max_connections = 500;注意:需要 SUPER 权限;新连接才能使用新值,已有连接不受影响 若提示 “Variable 'max_connections' is a read only variable”,说明已启用只读模式或配置文件锁定,需改配置文件
永久修改(推荐方式)
编辑 MySQL 配置文件(Linux 通常为
/etc/my.cnf或
/etc/mysql/my.cnf,Windows 为
my.ini),在
[mysqld]段落下添加或修改:
max_connections = 500
保存后重启 MySQL 服务生效:
systemctl restart mysqld(CentOS/RHEL)
sudo service mysql restart(Ubuntu/Debian)
⚠️ 注意:设得过高会显著增加内存占用(每个连接约占用 256KB–2MB 内存,取决于排序缓冲、临时表等配置),建议按公式粗略估算:总内存 × 70% ÷ 单连接平均内存 ≈ 合理上限
配合优化效果更佳
应用端启用连接池(如 HikariCP、Druid),控制最大活跃连接数,避免瞬时打满 检查并缩短wait_timeout和
interactive_timeout(默认 28800 秒),及时释放空闲连接 监控连接状态:
SHOW PROCESSLIST;可识别长事务或挂起连接,辅助定位泄漏点
