mysql的cpu占用达到100%;show processlist命令查看 会出现1000多个lock的语句

mysql的cpu占用达到100%;show processlist命令查看 会出现1000多个lock的语句,第1张

杀掉lock进程最快的方法是重启mysql,像你这种情况,1000多sql锁住了,最好是重启

如果不允许重启,我提供一个shell脚本,生成 kill id命令杀掉lock线程,如下:

------------------------------------

#!/bin/bash

mysql -u root -e "show processlist"|grep -i "Locked" >>locked.txt

for line in awk '{print $1}' locked.txt

do

echo "kill $line">>kill_lock.sql

done

----------------------------------

执行完脚本后,会生成kill_lock.sql文件,内容类似如下:

kill 1

kill 2

kill 3

-------------------这些对应的都是lock的sessionid,直接复制文件里的内容,然后在mysql里执行就ok 了

至于排查哪条sql引起的,这个有点难了,不过你可以尝试开启慢查日志和无索引日志来确认比较耗时的查询,避免再次出现堵塞

解决方法:

1、使用service启动—命令为:service mysqld start,service mysql start,mysql 5 以后就用mysqld来启动。

2、使用mysqld脚本启动—命令为:/etc/init.d/mysqld start/etc/init.d/mysqld 为mysql安装路径。

3、使用service关闭—命令为:service mysqld stopservice mysql stop,mysql 5 以后就用mysqld来关闭。

4、使用mysqld脚本关闭—命令为:/etc/init.d/mysqld stop/etc/init.d/mysqld 为mysql安装路径。

5、使用service重启—命令为:。service mysqld restart。service mysql restart。mysql 5 以后就用mysqld来重启。

6、使用mysqld脚本重启—命令为:/etc/init.d/mysqld restart/etc/init.d/mysqld 为mysql安装路径。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5907733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存