Mysql数据库连接数满了(too many connection)处理方法【详细教程】

首先查看下数据库的最大连接数

SHOW VARIABLES LIKE 'max_connections';

查看下当前数据库的连接数

SHOW STATUS WHERE `variable_name` = 'Threads_connected';

当达到或者接近最大连接数的时候  数据库就会报too many connection

接着我们看下到底是哪些机器的线程占用了我们的连接数

SHOW PROCESSLIST;

一般是由于高并发引起的或者测试环境造数  测试人员操作不当开启了很多线程造成的

SELECT CONNECTION_ID() AS Current_Connection_ID,
       GROUP_CONCAT(id ORDER BY id SEPARATOR ', ') AS Thread_IDs
FROM information_schema.processlist
WHERE command != 'Sleep'
  AND id != CONNECTION_ID();

SELECT id
FROM information_schema.processlist
WHERE
#     command != 'Sleep'  AND
#     HOST like '192.168.16.189%' and
   id != CONNECTION_ID() and
   USER='your_database_name';

确定了是哪些线程后,我们就可以生成杀死这些线程的SQL

SELECT
    CONCAT('KILL ', id, ';')
FROM
    information_schema.processlist
WHERE
#     host  like '192.168.16.189%' and
    USER='apps_ohub_uat';

也可以像下面这样优雅的进行删除

SELECT
    CONCAT('KILL ', id, ';')
INTO @kill_commands
FROM
    information_schema.processlist
WHERE
    host = '特定IP';

PREPARE stmt FROM @kill_commands;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

杀完之后 我们再查一下现在的连接数

SHOW STATUS WHERE `variable_name` = 'Threads_connected';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值