出现此错误 [ERROR 1040: Too many connections] 的原因,一种是访问量确实很高,MySQL 服务器顶不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是 MySQL 配置文件中 max_connections 值过小。

查询 MySQL 的最大连接数:

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+
1 row in set (0.00 sec)

查询 MySQL 响应的最大连接数:

mysql> show global status like 'max_used_connections';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 5     |
+----------------------+-------+
1 row in set (0.00 sec)

说明:本地环境没什么参考价值,但是就上面的数据而言,MySQL过去所响应的最大连接数小于其允许的最大连接数,所以不会出现1040错误。

MySQL 比较理想的最大连接数计算方式为:

max_used_connections / max_connections * 100% ≈ 85%

即最大连接数占上限连接数的 85% 左右,如果发现比例在 10% 以下,MySQL 服务器连接数上限设置的过高了。

标签:MySQL