视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL遇到Toomanyconnections的解决办法
2020-11-09 10:28:36 责编:小采
文档


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

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

在出现这种问题的时候业务已经出现问题了,这种情况下最主要的是先恢复业务,而且自己要最先获取show innodb status和show 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即可。对于短时间上来大量请求的需要和开发一起分析定位问题。

下载本文
显示全文
专题