当前最大连接数通过show variables like 'max_connections'查看,历史峰值用show global status like 'max_used_connections';若长期超80%需扩容,但须同步调高系统文件限制、评估内存与cpu负载,优先优化慢sql而非盲目增加连接数。

查当前最大连接数和实际使用峰值
直接进 MySQL 执行:show variables like 'max_connections'; 就能看到当前生效值;再跑一句 show global status like 'Max_used_connections';,它告诉你历史上最高同时连了多少个——这个数字比 max_connections 更关键。如果 Max_used_connections 长期卡在 max_connections 的 80% 以上,说明快顶不住了;如果常年只有 10–20,那调高反而浪费内存。
临时改(只到下次重启)
命令行登录后执行:set global max_connections = 1000; 立刻生效,适合紧急救火。但注意:这只是改了运行时变量,MySQL 进程一重启就回退到配置文件里的值。常见错误是改完以为万事大吉,结果半夜服务重启,Too many connections 错误又来了。
永久改(必须配文件 + 检查系统限制)
编辑 MySQL 配置文件(/etc/my.cnf 或 /etc/mysql/my.cnf),在 [mysqld] 段下加一行:max_connections = 1000。但这只是第一步:
- systemd 管理的服务(如 CentOS 7+/Ubuntu 16.04+)默认限制进程打开文件数,常卡死在 214 或 1024 —— 即使你配了 5000,MySQL 启动时也会默默按系统限制截断
- 必须同步改 systemd 服务单元:
/usr/lib/systemd/system/mysqld.service(或mariadb.service),在[Service]下加LimitNOFILE=10000和LimitNPROC=10000 - 改完要执行:
systemctl --system daemon-reload,再systemctl restart mysqld
否则你会看到配置写了 1000,show variables 却返回 214 —— 不是 MySQL 没读配置,是操作系统不放行。
免费 盛世企业网站管理系统(SnSee)系统完全免费使用,无任何功能模块使用限制,在使用过程中如遇到相关问题可以去官方论坛参与讨论。开源 系统Web代码完全开源,在您使用过程中可以根据自已实际情况加以调整或修改,完全可以满足您的需求。强大且灵活 独创的多语言功能,可以直接在后台自由设定语言版本,其语言版本不限数量,可根据自已需要进行任意设置;系统各模块可在后台自由设置及开启;强大且适用的后台管理支
别盲目拉高,小心内存和 CPU 反被拖垮
max_connections 不是越大越好。每个连接至少占几 MB 内存(尤其开了 sort_buffer、join_buffer),连接数翻倍,内存占用可能翻倍还多。更隐蔽的问题是:连接堆积会加剧锁竞争、线程上下文切换开销,CPU 使用率可能突然飙升。实测中,从 200 调到 2000 后 QPS 反而下降 15%,就是因为线程调度成了瓶颈。
真正该盯的是 Threads_running(当前活跃连接数)和慢查询日志——多数“连不上”问题根源不在上限低,而在有长事务或慢 SQL 把连接池堵死了。先优化查询,再扩连接数。
系统级限制、内存水位、真实并发压力,这三样没摸清之前,光改 max_connections 就像给漏水的桶拼命加水。









