Mysql 报错Too many connections
原因及解决办法
Mysql 1040 Too many connections连接不上原因
- 根本原因
连接数超过了Mysql配置的最大连接数,所以拒绝新的连接
- 可能造成连接数过大原因
错误连接太多,而等待时间有过长。导致很多错误连接未关闭。
- 查看当前配置的最大连接数
mysql> show variables like '%max_connections%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| max_connections | 151 |
| mysqlx_max_connections | 100 |
+------------------------+-------+
2 rows in set (0.01 sec)
- 查看当前 MySQL 连接情况
SHOW PROCESSLIST; #查看前 100 条连接
SHOW full PROCESSLIST; #查看所有连接
- 查看当前连接数
mysql> show status like 'Threads%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 0 |
| Threads_connected | 114 |
| Threads_created | 286 |
| Threads_running | 2 |
+-------------------+-------+
4 rows in set (0.01 sec)
解决方案
修改连接等待时间(推荐)
- 方案1:临时变更连接超时时间(无需重启)
SET GLOBAL interactive_timeout = 60;
SET GLOBAL wait_timeout = 60;
- 方案2:在配置文件中修改超时时间(需重启 MySQL 生效)
打开MySQL配置文件,默认位置/etc/mysql/mysql.conf.d/mysqld.cnf
,修改对应的参数
[mysqld]
interactive_timeout=60
wait_timeout=60
增大最大连接数(不推荐)
- 方案1:临时调整最大连接数(无需重启)
set GLOBAL max_connections = 300;
- 方案2:修改配置文件最大连接数
打开MySQL配置文件,默认位置/etc/mysql/mysql.conf.d/mysqld.cnf
。
修改max_connections
的值
tips:
临时变更配置的方法,在重启 MySQL 后会恢复配置文件中的设置值
无法登录Mysql时
可修改配置文件,重启MySQL