MySQL中too many connections问题解决
admin
2023-05-17 05:02:03
0

今天我的MySQL遇到一个不算太陌生的错误“Too many connections”。平常碰到这个问题,我基本上是修改/etc/my.cnf


max_connections参数,然后重启数据库。但

是生产服务器上数据库又不能随便重启。


没办法,只好想办法手动去释放一些没用的连接。


登陆到MySQL的提示符下,数据show processlist这个命令,可以得到所以连接到这个服务器上的MySQL连接:

mysql> show  processlist;

+---------+------+---------------------+---------+---------+------+-------+-------------------+-------------------------+
| Id      | User | Host                | db      | Command | Time | State | Info                 |
+---------+------+---------------------+---------+---------+------+-------+-------------------+-------------------------+
| 1180421 | ur   |202.103.96.68:49754 | test1   |Sleep   |    1 |      | NULL                 |
| 1180427 | ur   |202.103.96.68:55079 | test2   |Sleep   |    1 |      | NULL                 |
| 1180429 | ur   |202.103.96.68:55187 | testdba | Sleep  |    0 |       | NULL                 |
| 1180431 | ur   |202.103.96.68:55704 | testdba | Sleep  |    0 |       | NULL                  |
| 1180437 | ur   |202.103.96.68:32825 | test1   |Sleep   |    1 |      | NULL                 |
| 1180469 | ur   |202.103.96.68:58073 | testdba | Sleep  |    0 |       | NULL                  |
| 1180472 | ur   |83.136.93.131:47613 | test2   |Sleep   |    8 |      | NULL                  |
| 1180475 | root | localhost          | NULL    | Query   |    0| NULL  | show  PROCESSLIST |
+---------+------+---------------------+---------+---------+------+-------+-------------------+---------------------------+
8 rows in set (0.00 sec)
mysql>


然后,你可以看到像上面这样的MySQL数据连接列表,而且每一个都会有一个进程ID号(在上表的第一列)。我们只要输入这样的命令:

mysql> kill 1180421;
Query OK, 0 rows affected (0.00 sec)
 
mysql>

其中1180421为你在进程列表里找到并且要杀掉的进程号。

产生这种问题的原因是:

连接数超过了MySQL设置的值,与max_connections和wait_timeout都有关系。Wait_timeout的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大。

解决方法:

修改MySQL参数文件my.cnf,设置成max_connections=1000,wait_timeout=5,如果没有此项可以自行添加,修改会重启MySQL服务即可,要不经常性报此错误,则要对服务器做整体性能优化

注:

为了防止发生too many connections时候无法登录的问题,mysql manual有如下的说明:

mysqld actually allows max_connections+1 clients to connect. The extra connection isreserved for use by accounts that have the SUPER privilege. By granting the SUPER privilege to administrators and not tonormal users (who should not need it), an administrator can connect to theserver and use SHOW PROCESSLIST to diagnose problems even if the maximum number ofunprivileged clients are connected.



因此, 必须只赋予root用户的SUPER权限,同时所有数据库连接的帐户不能赋予SUPER权限。前面说到的报错后无法登录就是由于我们的应用程序直接配置的root用户

 

总结,解决问题的最终方法:

1.修改参数文件my.cnf,调整连接参数

2.检查程序代码,对于没有关闭的链接及时进行关闭


相关内容

热门资讯

创维电视42d9指示灯不亮 1、可能为电源插座插头的故障。2、可能为电源连接线的故障。3、可能为电视内部开关电源电路出了故障。4...
电视不通电指示灯不亮是什么原因 因为电源适配器发生了故障,就会导致电视不通电指示灯不亮;当然了,电视机也会因为开机的电源电路发生异常...
天然气灶电子打火一直不停 天然气灶电子打火一直不停发生这个现象大概率是因为打火装置发生了故障。天然气灶是通过高压电子发动打火装...
天然气打火灶打不着火 1、可能是电池没有电或者是天然气没有气了。2、天然气的管道出现了堵塞,就会导致天然气打火灶打不着火的...
天然气灶一边能打火一边打不着火 1、可能是一边是保护针使用时间长,固定保护针的底座变形,保护针远离火焰,导致此边无法打着火;2、检查...
视频丨乘火车、飞机这些东西不能... 暑期出游、探亲、研学等日程排得满满当当,不光要玩得尽兴,还要注意出行安全,不要因为一时疏忽,耽误行程...
星辰为梦 同心同行|回辉、回新... 在科技日新月异的新时代,浩瀚星空承载着中华民族千年的飞天梦想,更成为联结各族青少年纯真心灵的温暖桥梁...
碧松照明取得便于散热的工厂灯专... 国家知识产权局信息显示,江苏碧松照明股份有限公司取得一项名为“便于散热的工厂灯”的专利,授权公告号C...
19元200G或成绝唱!三大运... 快科技8月2日消息,近日,移动、联通、电信同步发布渠道管理新规,从8月1日起,电商店铺、短视频直播间...
央视曝光:峡谷漂流水下暗礁乱石... 网红高空项目火爆出圈,惊险体验刷屏全网,“勇敢者游戏”背后却暗藏致命隐患。部分游乐项目游离监管之外,...