出现此错误 [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
服务器连接数上限设置的过高了。