ITPub博客

首页 > Linux操作系统 > Linux操作系统 > MySQL: Too many connections

MySQL: Too many connections

原创 Linux操作系统 作者:aaqwsh 时间:2011-06-17 13:26:55 0 删除 编辑

mysql  error Too many connections

今天中午,监控说有台mysql服务器连不上,登陆检查:
mysqladmin -u  -p processlist
mysqladmin: connect to server at 'localhost' failed
error: 'Too many connections'

同时,发现3306端口有很多连接:
netstat -anp
tcp        0      0 1.1.1.2:3306              1.1.1.52:42886            ESTABLISHED -                  
tcp        0      0 1.1.1.2:3306              1.1.1.52:42887            ESTABLISHED -                  
tcp        0      0 1.1.1.2:3306              1.1.1.52:42884            ESTABLISHED -                  
tcp        0      0 1.1.1.2:3306              1.1.1.1:40008             ESTABLISHED -                  
tcp        0      0 1.1.1.2:3306              1.1.1.57:39863            TIME_WAIT   -                  
tcp        0      0 1.1.1.2:3306              1.1.1.57:39862            TIME_WAIT   -                  
tcp        0      0 1.1.1.2:3306              1.1.1.57:39861            TIME_WAIT   -                  
tcp        0      0 1.1.1.2:3306              1.1.1.57:39860            TIME_WAIT   -                  
tcp        0      0 1.1.1.2:3306              1.1.1.57:39859            TIME_WAIT   -                  
tcp        0      0 1.1.1.2:3306              1.1.1.57:39858            TIME_WAIT   -                  
tcp        0      0 1.1.1.2:3306              1.1.1.57:39857            TIME_WAIT   -                  
tcp        0      0 1.1.1.2:3306              1.1.1.57:39856            TIME_WAIT   -                  
tcp        0      0 1.1.1.2:3306              1.1.1.57:39871            TIME_WAIT   - 

如果是oracle ,ps -ef 可以找到一个(LOCAL=NO)的进程,然后,kill -9,但是mysql 是多线程服务器,
只有一个通过mysqld_safe启动的mysqld进程。因为时间紧迫,只能kill 了上述两个进程。
然后通知开发控制每台机器的连接数,调整应用,同时也调整了最大连接数

网上找到一个处理的文章:

MySQL: Too many connections

2010-09-28  |  07:10分类:MySQL  |  标签:MySQL  |  1,654 views

$mysql -uroot
ERROR 1040 (00000): Too many connections

上面的错误,估计很多人都遇到过,Aurimas MikalauskasMySQL Performance Blog已经提到了一个解决办法(生产环境慎用之):

$gdb -p $(cat data/mysql_sandbox5087.pid) \
-ex "set max_connections=5000" -batch

上面提到的只是一个救火的办法,MySQL提供了另一个办法,可以一定程度上避免上述问题。

MySQL提供了参数max_connections控制最大连接数,这包括所有用户的连接数。MySQL还提供了另一个参数max_user_connections,用来控制某个用户的最大连接数。例如,将该参数设置为50,那么对于任何一个用户(包括super权限的用户),最多只能创建50个连接。

于是我们可以制定下面的策略:如果的MySQL3个用户(不包括root),将max_user_connections设置为300max_connections设置为1000。配置文件:

max_connections = 1000
max_user_connections=300

那么因为只有3个用户,单个用户的最大连接数是300,那么正常最多就只有900个连接,也就总会有100个额外的连接给root来使用。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/758322/viewspace-700127/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-11-24

  • 博文量
    132
  • 访问量
    262171