Mysql 1040 Too many connections solutions
原因分析
连接mysql请求过多,超过mysql数据库的最大连接数。(造成请求过多可能有两方面的原因,一是实际请求需求确实较多,二是程序出现异常,导致连接mysql数据库的资源无法及时释放,需排查程序异常代码,尤其是数据库连接部分)
解决过程
1、使用navicat工具连接mysql数据库。若连接不上,重启mysql服务
sudo service mysql restart
2、查看数据库连接数,会有很多sleep状态的连接,从返回的host 和db可以排查连接主体是谁
SHOW PROCESSLIST;
3、查看mysql最大连接数
show variables like "max_connections";
4、临时修改mysql最大连接数,重启mysql则恢复默认值
set GLOBAL max_connections=1500;
5、永久修改mysql 最大链接数,修改mysql启动配置文件mysqld.cnf中设置max_connections = 1500,重启mysql服务
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
6、mysql中“wait_timeout”这个数据默认是28800s,表示mysql在自动关闭一个睡眠连接前等待的秒数,因此可以修改这个数值,使得mysql可以及时自动关闭无用连接
set global wait_timeout=500;
7、kill无用连接,通常情况下可能会造成误杀,一般不建议这么做,若非要做,参考这篇文章:https://www.jb51.net/article/65718.htm
8、一般来说,mysql最大连接数的设置依赖于应用程序,不可过大,否则会降低数据库性能