如何修改 mysql 连接数限制
-
查看当前连接数限制相关参数
- MySQL 5.7 和 8.0 都可以通过以下命令查看最大连接数、当前连接和历史峰值:
SHOW VARIABLES LIKE 'max_connections'; SHOW GLOBAL STATUS LIKE 'Threads_connected'; SHOW GLOBAL STATUS LIKE 'Max_used_connections';- 这个命令会返回一个包含变量名(
Variable_name)和变量值(Value)的结果集,其中Value列显示的就是当前max_connections的值。
-
修改配置文件来改变连接数限制(推荐方法)
- 找到配置文件位置:
- Linux 常见位置是
/etc/my.cnf、/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf;Windows 常见位置是C:\ProgramData\MySQL\MySQL Server 8.0\my.ini。可执行mysqld --verbose --help查看配置文件搜索顺序。
- Linux 常见位置是
- 修改配置文件中的参数:
- 在配置文件的
[mysqld]部分添加或修改max_connections参数。例如,将最大连接数设置为 500,可以这样写:
[mysqld] max_connections = 500- 保存配置文件后,需要重启 MySQL 服务才能使新的连接数限制生效。在 Linux 系统中,可以使用以下命令重启 MySQL(具体命令可能因 Linux 发行版和安装方式而异):
sudo systemctl restart mysql- 在Windows系统中,可以通过服务管理器找到
MySQL服务,然后右键选择“重启”。
- 在配置文件的
- 找到配置文件位置:
-
通过 SQL 命令临时修改连接数限制(不推荐长期使用)
- 可以使用以下 SQL 命令来临时修改最大连接数限制:
SET GLOBAL max_connections = 500;SET GLOBAL只影响后续新连接,实例重启后失效。MySQL 8.0 可使用SET PERSIST max_connections = 500;写入mysqld-auto.cnf;采用配置管理时仍建议在主配置文件中维护唯一来源。
不要只提高数字
每个连接都会消耗内存、线程和文件描述符。调整前应结合
Max_used_connections、连接池规模、open_files_limit和服务器内存评估;连接耗尽通常还需要排查慢查询、事务未提交和连接泄漏。
解决连接长时间不释放的问题
-
关于
interactive_timeout和wait_timeout参数的作用- MySQL 5.7 和 8.0 中,
interactive_timeout和wait_timeout都用于控制空闲连接超时。 interactive_timeout主要应用于交互式连接,比如通过mysql命令行客户端建立的连接。当一个交互式连接处于空闲状态达到interactive_timeout设定的秒数后,MySQL服务器会自动断开该连接。wait_timeout适用于非交互式连接,例如通过应用程序建立的数据库连接。如果一个非交互式连接空闲时间超过wait_timeout规定的秒数,服务器也会将其断开。
- MySQL 5.7 和 8.0 中,
-
执行这两个命令是否有用的分析
- 临时修改有效:
- 执行
SET GLOBAL interactive_timeout = 120;和SET GLOBAL wait_timeout = 120;会影响之后创建的连接,不会回写已有会话的 session 变量。应用连接主要受wait_timeout控制。
- 执行
- 持久化问题:
- 不过,这种修改是临时的。如果MySQL服务重启,这两个参数会恢复到原来的值(通常是默认值或者配置文件中设置的值)。要使修改永久生效,需要在MySQL的配置文件(通常是
my.cnf或者my.ini)中添加或修改以下行:
[mysqld] interactive_timeout = 120 wait_timeout = 120- 然后重启MySQL服务,这样每次启动后,服务器都会按照配置文件中的设置来处理连接超时时间。
- 不过,这种修改是临时的。如果MySQL服务重启,这两个参数会恢复到原来的值(通常是默认值或者配置文件中设置的值)。要使修改永久生效,需要在MySQL的配置文件(通常是
- 临时修改有效:
连接池注意事项
120秒并不是通用推荐值。数据库超时短于连接池的最大空闲时间时,应用可能复用已被服务端关闭的连接。应同时配置连接池的健康检查、最大生命周期和空闲时间,并修复未关闭 ResultSet/事务等根因。