1、报错信息如下:
连接MySQL数据库提示:1040 Too many connections:
2、原因:
由于数据库连接数量,超过了数据库的最大连接数。
PS:因为这些数据库连接数,处于sleep状态,但是还没有被清除掉。
查看原因:
1)登录数据库
登录服务器,输入命令:
mysql -uroot -p
输入数据库登录密码后,登录成功。
2)查看数据库进程状态
show status like 'Threads%';
treads_cached :缓冲池中的线程数。
Threads_connected:当前连接(运行和睡眠)中的线程数。
Threads_created :创建过连接的线程数。
Threads_running:当前运行(没有睡眠)中的线程数。
总共连接了:152个。
3)查看数据库最大连接数
show variables like '%max_connection%';
最大连接数:151个,小于当前连接总数152,所以提示:Too many connections。
4)查看清除Sleep连接数时间
show variables like 'wait_timeout';
清除时间间隔为:28800秒(8小时),连接后8小时清除掉。
3、解决方法:
解决方法优先按下面1、2、3的顺序:
1)排查代码问题
看看到底哪里产生的连接数过多,有可能是代码比如定时任务引起的问题。
2)增加最大连接数
set GLOBAL max_connections=1000;
比如,改为1000个连接数:
3)改小清除Sleep连接数时间
set GLOBAL wait_timeout=14400;
改成4小时清除或者更短的时间间隔。