mysql线上负载高怎么排查

本文介绍了如何通过查看MySQL运行线程来诊断和解决线程卡顿问题,包括使用mysqladmin和show processlist命令,以及如何调整连接数和超时时间。

作为一个开发人员或者数据库管理员,学会检查数据库运行情况是必不可少的工作。造成MySQL线程卡顿的原因有很多,但是无论是哪种原因,我们发现问题之后的第一要务就是解决问题,防止问题继续恶化。那么,应该如何操作?

查找线程

有两种方法可以查看正在运行的线程。

  1. 进入到mysql/bin目录下,执行mysqladmin processlist

  2. 连上MySQL,输入show processlist;命令查看

  3. show variables like "%max_connections";

我们用Navicat登录localhost简单看一下,结果如下:

如何kill掉卡顿的MySQL线程?

结果中每一行对应一个连接,每一列的含义如下:

Id:thread_id,线程id;

User:用户,如果你不是root,那么只能看到权限范围内的SQL;

Host:可以看到来源IP和端口,结合netstat或lsof命令可快速定位进程;

db:当前DB实例;

Command:当前执行的命令,通常是sleep、query、connect ;

Time:当前状态持续了多少秒;

State:当前状态;

Info:当前语句;

如果是连接数太小了,可以适当修改一下,超时时间太长的话同样直接改小就行。

其次,用户增长太猛,这个时候就需要添加机器了。

杀死线程

执行kill id命令即可杀死卡顿的线程

常见原因

造成线程卡顿的原因有很多,但是很多时候通常只有两种:

  1. 锁竞争

  2. 慢查询

转载于:https://www.cnblogs.com/qinyujie/p/8891919.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值