美文网首页
记一次mysql负载过高处理

记一次mysql负载过高处理

作者: 流芳不待人 | 来源:发表于2019-03-23 10:06 被阅读0次

mysql 使用的是阿里云的RDS。某天 cpu 突然负载过高报警。

首先查询了连接数

netstat -nt |grep 3306 | wc -l

发现各台服务器上的mysql 连接数都不高。
于是猜测是某些查询有问题。

然后查看下mysql进程是否有锁

mysql -h xxx.mysql.rds.aliyuncs.com -u xxx -p -e "show processlist" | grep -i "locked" > locked.log

发现没有锁操作。但是用showprocess 看了下有很多时间超长的,最长的甚至超过1000s。

这个时候mysql压力很大,后续还有写操作堆积,只好先把这些有问题的超慢查询kill掉。

#查出慢查询的mysql进程id
mysql -h xxx.mysql.rds.aliyuncs.com -u xxx -p -e "show processlist" | awk '{if ($6 > 1000)  print $1}' > long.log
#将要kill的进程id 变成 sql
for line in `cat long.txt`;do echo "kill $line;" > kill.sql;  done
mysql -h xxx.mysql.rds.aliyuncs.com -u xxx -p < kill.sql

效果很明显 当然负作用也很大,那些没来得及写入的数据就丢掉了

相关文章

网友评论

      本文标题:记一次mysql负载过高处理

      本文链接:https://www.haomeiwen.com/subject/inmjvqtx.html