MySQL最大连接数默认通常为151,生产环境高并发时容易出现“Too many connections”错误,需根据服务器资源和业务需求合理调大。关键不是盲目设高,而是结合内存、线程开销与实际负载综合调整。
查看当前最大连接数和实际使用情况
登录MySQL后执行以下命令:
查看当前设置: SHOW VARIABLES LIKE 'max_connections'; 查看当前活跃连接数: SHOW STATUS LIKE 'Threads_connected'; 查看历史峰值连接数(需开启performance_schema或监控): 可查 SHOW STATUS LIKE 'Threads_created'; 辅助判断连接波动趋势临时修改(重启失效)
适合测试或紧急调整,不写入配置文件:
执行命令:SET GLOBAL max_connections = 1000; 注意:需要SUPER权限;新连接才能使用该值,已有连接不受影响 该值在MySQL服务重启后会恢复为配置文件中的设定永久修改(推荐方式)
编辑MySQL配置文件(Linux常见为/etc/my.cnf或/etc/mysql/my.cnf,Windows为my.ini),在[mysqld]段下添加或修改:
max_connections = 1000 保存后重启MySQL:systemctl restart mysqld(CentOS/RHEL)或service mysql restart(Ubuntu/Debian) 确认生效:SHOW VARIABLES LIKE 'max_connections';注意事项与优化建议
单纯调高max_connections可能引发新问题,需同步关注:
内存占用:每个连接约占用256KB–2MB内存(取决于排序缓冲、临时表等设置),1000连接可能额外消耗几百MB内存 配套参数检查:如table_open_cache、sort_buffer_size、read_buffer_size不宜随连接数线性放大,否则易OOM 应用层连接池:更有效的方式是用HikariCP、Druid等连接池控制并发,避免频繁创建销毁连接 排查异常连接:用SHOW PROCESSLIST;检查长时间Sleep状态的连接,防止连接泄漏