Chinaunix首页 | 论坛 | 博客
  • 博客访问: 197966
  • 博文数量: 34
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 387
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-10 21:00
个人简介

http://blog.chinaunix.net/uid/26870656.html 我是一个很懒的人

文章分类

全部博文(34)

文章存档

2014年(18)

2013年(9)

2012年(7)

分类: Mysql/postgreSQL

2013-04-07 21:28:08

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即可。对于短时间上来大量请求的需要和开发一起分析定位问题。

 

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