Mysql连接过多导致很慢

本文分析了MySQL数据库连接变慢的原因,发现是由于Sleep连接数过多引起资源争抢。通过检查并清理无效连接,并调整wait_timeout和interactive_timeout的超时时间至30秒,有效解决了问题。建议将配置永久写入mysql配置文件,以防止重启后失效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

Mysql的某个数据库连接变得很慢。


原因分析:

经过检查,发现是Mysql的Sleep连接数过多,导致资源争抢,所以查询连接变得很慢。
在命令行执行以下查询语句,检查数据库无效连接。

SELECT
*
FROM
information_schema.processlist WHERE USER='root'
AND command='Sleep'
and db = 'yhwz'
order by time desc;

发现了100多个无效连接,经过测试是该原因导致的连接变慢。
在这里插入图片描述


解决方案:

查看sleep默认的超时时间

SHOW GLOBAL VARIABLES LIKE 'wait_timeout'; 
SHOW GLOBAL VARIABLES LIKE 'interactive_timeout';

在这里插入图片描述
设置超时时间编程30秒,注意:必须两个参数同时设置才会生效。

set global wait_timeout=30;
set global interactive_timeout=30;

这种修改方式在重启mysql服务后,会失效,所以最好还是把这两个属性配置到mysql配置文件中。

然后手动把sleep的进程给清楚掉,先执行下以下语句,会出现一个cmd单位

SELECT
GROUP_CONCAT(CONCAT('kill ',Id) SEPARATOR';') AS cmd
FROM
information_schema.processlist WHERE USER='root'
AND command='Sleep'
and db = 'yhwz';

在这里插入图片描述
把查出来的结果粘贴出来,全部执行一下:
在这里插入图片描述
再检查一下连接数,发现无了。

SELECT
*
FROM
information_schema.processlist WHERE USER='root'
AND command='Sleep'
and db = 'yhwz'
order by time desc;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老司机张师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值