MySQL提示“too many connections”的解决办法

今天生产服务器上的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配置文件/etc/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 is reserved for use by accounts that have the SUPER privilege. By granting the SUPER
privilege to administrators and not to normal users (who should not
need it), an administrator can connect to the server and use SHOW PROCESSLIST to diagnose problems even if the maximum number of unprivileged clients are connected.

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

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

1.修改配置文件/etc/my.cnf,调整连接参数

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

时间: 2024-10-03 05:56:08

MySQL提示“too many connections”的解决办法的相关文章

Windows7环境下Apache连接MySQL提示“连接已重置”的解决办法

win7下手动搭建wamp环境,碰到的几个坑总结下, 1.能正常访问php和html类型文件,但是访问项目文件时老是连接被重置,后来总结是数据库的问题,就写测试用例测试php能否成功调用数据库, 1 <?php 2 echo "mysql"; 3 4 $mysql_conf = array( 5 'host' => '127.0.0.1', 6 'db' => 'drupal628', 7 'db_user' => 'root', 8 'db_pwd' =>

无法启动MYSQL服务”1067 进程意外终止”解决办法——汇总及终极方法

自己一开始按照百度经验里的方法--<MySQL下载安装.配置与使用(win7x64)>去安装和配置,但是到后面步骤总是出现1067代号的错误.慢慢折腾去解决. 这里汇总各种导致mysql提示无法启动MYSQL服务"1067 进程意外终止"的一些解决办法.自己遇到这个问题是查了很多方法不行,最后看到一个论坛的讨论,试了一下竟然可以.一下是网上的部分方法,最后可以的那个方法我放在最后面: 启用MySql服务的时候出现"windows无法启动mysql服务(位于本地计算

无法启动MYSQL服务”1067 进程意外终止”解决办法

原文:http://www.111cn.net/database/mysql/48888.htm 本文章主要是总结了各种导致mysql提示无法启动MYSQL服务"1067 进程意外终止"的一些解决办法,有碰到mysql无法启动的同学可尝试参考. 启用MySql服务的时候出现"windows无法启动mysql服务(位于本地计算机上.错误1067:进程意外终止)",看看mysql服务并没有其它的依赖安系啊,于是突然想到进系统日志看看,果然发现很多MySql的很多错误,终

Ubuntu提示piix4_smbus:Host SMBus错误解决办法

1.编译内核时出现下面的错误 CHK     include/linux/version.h CHK     include/generated/utsrelease.h make[1]: `include/generated/mach-types.h' is up to date. CALL    scripts/checksyscalls.sh CC      scripts/mod/empty.o /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-

Oracle11g - dos 命令 sqlplus/nolog 提示 不是内部命令解决办法

继安装Oracle 11g后,解锁SCOtt时发现 dos 命令 sqlplus/nolog 提示 不是内部命令解决办法   通过实际验证现整理有效方法步骤如下: 步骤一:开始>>找到Oracle - OraDb11g_home1>>Oracle 安装产品>>点击打开Universal Installer : 步骤二:点击打开Universal Installer 之后会出现下图界面 步骤三:此时只需等待就会出现Oracle Universal Installer 欢迎

DATABASE CONNECTION ERROR (1): THE MYSQL ADAPTER &#39;MYSQLI&#39; IS NOT AVAILABLE.解决办法

网站迁移之后遇到:Database connection error (1): The MySQL adapter 'mysqli' is not available.这个问题,我一开始以为是我配置的参数错了呢!然后回去检查,检查好几遍我的数据库账号和密码都没错,但是为什么就是连接不上数据库呢?? 网上有人说是"可能有你安装wamp或者xamp之后,sqlserver的服务没有启动,你可以到系统服务菜单里看看这个是否自动启动."但是我问过空间商,他们说默认都是开启的,然后他们也检查了数

在CentOS中安装32位或64位MySql报错error: Failed dependencies解决办法

在CentOS中安装MySql报错error: Failed dependencies解决办法 安装64位MySql报错内容如下:error: Failed dependencies:        libaio.so.1()(64bit) is needed by MySQL-server-5.6.19-1.el6.x86_64    libaio.so.1(LIBAIO_0.1)(64bit) is needed by MySQL-server-5.6.19-1.el6.x86_64    

windows 8,关闭任意窗口都提示“已停止工作”的解决办法

电脑用的好好的,突然出现了关闭任意窗口都提示"已停止工作",每次都是这样,想想也就是偶尔优化一下,最近也没有修改过什么系统设置呀,突然想到昨晚JLink_V8固件丢失,修复仿真器来着,但这也没什么影响啊,恩,后来因为嫌弃搜狗拼音输入法新版功能太多,我只是用来输入,根本不用其他的功能,就更换成了老版V4.3了,现在换回了最新V7版,故障解除.我猜可能是当时的搜狗版本还没有对windows8的很好支持吧,继续干活啦.windows 8,关闭任意窗口都提示"已停止工作"的

Aptana Studio 2启动时提示 Workspace Cannot Be Created 解决办法

今天在安装Aptana Studio 2时出现这个东东,卸载后再安装依旧不行最后找到原因 原因 : 就是由于你把"我的文档"的位置修改造成的. 但Aptana还以为 "我的文档"的位置 是在系统的默认路径下. 解决办法 : 右键快捷方式,找到"属性",把"目标"修改为 "D:/Program Files/Aptana Studio 2/AptanaStudio2.exe" -data "D:/Wo