【www.bbyears.com--Access】
出现此错误的原因,一种是访问量确实很高,MySQL服务器顶不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配置文件中max_connections值过小。
分析原因
mysql的默认连接上只有100,也就是说连接数据超过100 就会有可能出现 Too Many Connections
修改my.cnf配置文件添加并需要重启:
[mysqld]
wait_timeout = 600
interactive_timeout = 600
查询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服务器连接数上限设置的过高了。
问题找到解决办法
1、mysql -u root -p 进入不了,同样出现上述错误。
2、修改/etc/mysql/my.cnf(ubuntu系统,其他系统在/etc/my.cnf
代码如下[mysqld]
port=3306
#socket=MySQL
skip-locking
set-variable = key_buffer=16K
set-variable = max_allowed_packet=1M
set-variable = thread_stack=64K
set-variable = table_cache=4
set-variable = sort_buffer=64K
set-variable = net_buffer_length=2K
set-variable = max_connections=1000
3、重启
代码如下mysql /etc/init.d/mysql restart
搞定了。