|
|
51CTO旗下网站
|
|
移动端

如何kill掉卡顿的MySQL线程?

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

作者:架构之美来源:今日头条|2018-07-27 18:47

如何kill掉卡顿的MySQL线程?

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

查找线程

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

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

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

我们用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. 慢查询

【编辑推荐】

  1. MySQL主从架构-主库宕机如何恢复业务
  2. MySQL数据库如何实现多字段过滤
  3. 关于网易MySQL中间件的负载均衡策略及性能优化
  4. MySQL千万级的大表要怎么优化(读写分离、水平拆分、垂直拆分)
  5. MySQL-关于数据库建表的一些关点和建议
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢