$mysql -uroot
ERROR 1040 (00000): Too many connections
ERROR 1040 (00000): Too many connections
上面的错误,估计很多人都遇到过,Aurimas Mikalauskas在MySQL Performance Blog已经提到了一个解决办法(生产环境慎用之):
$gdb -p $(cat data/mysql_sandbox5087.pid) \
-ex “set max_connections=5000” -batch
-ex “set max_connections=5000” -batch
上面提到的只是一个救火的办法,MySQL提供了另一个办法,可以一定程度上避免上述问题。
MySQL提供了参数max_connections控制最大连接数,这包括所有用户的连接数。MySQL还提供了另一个参数max_user_connections,用来控制某个用户的最大连接数。例如,将该参数设置为50,那么对于任何一个用户(包括super权限的用户),最多只能创建50个连接。
于是我们可以制定下面的策略:如果的MySQL有3个用户(不包括root),将max_user_connections设置为300,max_connections设置为1000。配置文件:
max_connections = 1000
max_user_connections=300
max_user_connections=300
那么因为只有3个用户,单个用户的最大连接数是300,那么正常最多就只有900个连接,也就总会有100个额外的连接给root来使用。
Leave a Reply