mysql "too many connections" 错误之mysql解决方法

查看链接

进入mysql管理端

mysql -uroot -p //如果未配置mysql环境变量,请打全路径

 输入密码

查看链接命令

show processlist;

 

mysql>
然后,你可以看到像上面这样的MySQL数据连接列表,而且每一个都会有一个进程ID号(在上表的第一列)。我们只要输入这样的命令:
mysql> kill 1180421;
Query OK, 0 rows affected (0.00 sec)

查看配置文件目录

/usr/local/mysql/bin/mysqld --verbose --help | grep -A 1 'Default options'

  

修改配置

产生这种问题的原因是:

连接数超过了 MySQL 设置的值,与 max_connections (默认值151)和 wait_timeout (默认值28800) 都有关系。wait_timeout 的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大。

解决方法:

修改MySQL配置文件/etc/my.cnf,设置成max_connections=1000,wait_timeout=5。如果没有此项设置可以自行添加,修改后重启MySQL服务即可。要不经常性报此错误,则要对服务器作整体性能优化

wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可 能会遭遇到“MySQL has gone away”之类的问题,通常来说,我觉得把wait_timeout设置为10是个不错的选择,但某些情况下可能也会出问题,比如说有一个CRON脚本, 其中两次SQL查询的间隔时间大于10秒的话,那么这个设置就有问题了(当然,这也不是不能解决的问题,你可以在程序里时不时mysql_ping一下, 以便服务器知道你还活着,重新计算wait_timeout时间)

总结,解决问题的最终方法:

1.修改配置文件/etc/my.cnf,调整连接参数

2.检查程序代码,对于没有关闭的链接及时进行关闭

猜你喜欢

转载自nbczw8750.iteye.com/blog/2392104