Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7586423
  • 博文数量: 368
  • 博客积分: 9600
  • 博客等级: 上校
  • 技术积分: 18875
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-01 00:00
文章分类

全部博文(368)

文章存档

2017年(9)

2016年(19)

2015年(3)

2014年(6)

2013年(8)

2012年(78)

2011年(66)

2010年(135)

2009年(44)

分类: Mysql/postgreSQL

2013-04-06 17:35:06

Mysql遇到Too many connections的解决办法

由于线上mysql实例太多,因此也就经常遇到Too many connections的问题,这个问题也是最常见的问题,下面就结合自己的经验来说一下这种问题的解决办法。

在出现这种问题的时候业务已经出现问题了,这种情况下最主要的是先恢复业务,而且自己要最先获取show innodb statusshow full processlist的信息以便一会分析原因。最简单的办法就是临时将连接数稍微调大,让自己能登陆上去,一般这种情况下登陆的时候也会出现Too many connections的提示,那么该如何做呢?这时候可以在主上面写一个死循环不停的连接主mysql以保证自己能正常登录,简单语句如下:

while true;do mysql -uroot -ppassword -S /tmp/mysql_3306.sock;done

然后使用gdb工具来更改内存中max_connections的配置,使用方法为:先使用ps命令查找出mysql的进程ID,然后使用如下命令进行更改:

gdb -p 21862 -ex "set max_connections=1000" -batch

注意max_connections不要设置太大,如果设置太大可能会导致系统内存耗尽。

登陆之后就可以通过show full processlist看看到底发生了什么事情,一般的是有SQL堵住的了,kill掉对应的SQL即可。对于短时间上来大量请求的需要和开发一起分析定位问题。

 

阅读(23224) | 评论(1) | 转发(9) |
给主人留下些什么吧!~~

luolinae862014-06-18 16:56:19

赞楼主,用gdb的话,就不用更改max_connections后重启mysql服务了吧?