MySQL默认max_connections为151,可临时用SET GLOBAL修改(需权限)或永久在my.cnf的[mysqld]段配置;修改后需验证生效、检查open_files_limit及内存占用,避免OOM。

查看当前最大连接数设置
MySQL 启动后默认的 max_connections 通常只有 151,高并发场景下很快会触发 Too many connections 错误。先确认当前值:
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_connections';"
注意:这个值是运行时参数,重启后若未持久化配置会恢复默认。
临时修改 max_connections(重启失效)
适合快速验证或测试,无需重启服务:
- 登录 MySQL 后执行:
SET GLOBAL max_connections = 2000; - 该命令要求有
SYSTEM_VARIABLES_ADMIN权限(MySQL 8.0+)或SUPER权限(旧版本) - 立即生效,但仅对当前实例有效;服务重启后还原
- 如果报错
Access denied; you need (at least one of) the SYSTEM_VARIABLES_ADMIN privilege(s),说明账号权限不足,需用 root 或授权后的账号操作
永久修改 max_connections(需配置文件)
修改 MySQL 配置文件(如 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf),在 [mysqld] 段落下添加:
[mysqld] max_connections = 2000
然后重启服务:
citySHOP是一款集CMS、网店、商品、分类信息、论坛等为一体的城市多用户商城系统,已完美整合目前流行的Discuz! 6.0论坛,采用最新的5.0版PHP+MYSQL技术。面向对象的数据库连接机制,缓存及80%静态化处理,使它能最大程度减轻服务器负担,为您节约建设成本。多级店铺区分及联盟商户地图标注,实体店与虚拟完美结合。个性化的店铺系统,会员后台一体化管理。后台登陆初始网站密匙:LOVES
sudo systemctl restart mysql
常见坑点:
- 配置文件路径因安装方式而异:apt 安装多在
/etc/mysql/,源码编译可能在/usr/local/mysql/etc/,Docker 容器需挂载并检查入口脚本是否覆盖配置 - 确保修改的是
[mysqld]而非[client]或[mysql]段落,后者无效 - 某些云数据库(如阿里云 RDS、腾讯云 CDB)禁止修改该参数,需通过控制台调整规格或提交工单
验证修改是否生效且资源够用
改完别急着上线,要检查两件事:
- 确认新值已加载:
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_connections';" - 检查系统级限制:MySQL 实际能创建的连接数受
open_files_limit和操作系统ulimit -n制约。若max_connections设为 3000,但open_files_limit只有 1024,MySQL 会自动下调到安全值并写入错误日志 - 观察内存占用:每个连接至少消耗 256KB~1MB 内存(取决于 buffer 设置),设过高可能导致 OOM;建议按公式粗估:
总内存 ≈ max_connections × (sort_buffer_size + read_buffer_size + …) + 全局缓冲池
真正卡住人的往往不是配置没写对,而是没意识到 OS 层或内存配额已经成了瓶颈。










