关于MySQL的1040错误

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

查询MySQL的最大连接数:

1
2
3
4
5
6
7
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+
1 row in set (0.00 sec)

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

1
2
3
4
5
6
7
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比较理想的最大连接数计算方式为:

1
max_used_connections / max_connections * 100% ≈ 85%

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