max_connections 是指整个 mysql 服务器的最大连接数;
max_user_connections 是指每个数据库用户的最大连接数,比如:虚拟主机可以用这个参数控制每个虚拟主机用户的数据库最大连接数;
MySQL 服务器的连接数并不是要达到最大的 100% 为好,还是要具体问题具体分析,下面就对 MySQL 服务器最大连接数的合理设置进行了详尽的分析,供您参考。
我们经常会遇见 “MySQL: ERROR 1040: Too many connections” 的情况,一种是访问量确实很高,MySQL 服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是 MySQL 配置文件中 max_connections 值过小:
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 256 |
+-----------------+-------+
这台 MySQL 服务器最大连接数是 256,然后查询一下服务器响应的最大连接数:
mysql> show global status like 'Max_used_connections';
MySQL 服务器响应的最大连接数是 245,没有达到服务器连接数上限 256,应该不会出现 1040 错误,比较理想的设置是:
Max_used_connections / max_connections * 100% ≈ 85%
响应连接数占上限连接数的 85% 左右,如果发现比例在 10% 以下,MySQL 服务器连接上线就设置得过高了。
通过其它方式处理一下,针对指定用户设置的,比如:
方式1
GRANT USAGE ON *.* TO test_user@localhost MAX_USER_CONNECTIONS 2000;
方式2
UPDATE mysql.user SET max_user_connections = 2000 WHERE user='test_user' AND host='localhost'; FLUSH PRIVILEGES;