记一次mysql导致服务器CPU突然暴涨的问题

9月30号20点,感觉网站后台怎么越来越慢,打开阿里云看了服务器CPU竟然在几天内,一直是99%~100%,

今天一天就觉得网站访问慢,还想着优化读取数据,原来CPU早就干爆了。

想想有人攻击的话也不至于一直这样,putty上top一下,果然是mysql占满了CPU,大致查找策略如下

 

1、通过ps命令查找mysql进程ID
ps aux |grep mysqld

假设找到的pid为1796

2、使用top查找高CPU利用率的线程ID
top -Hp 1796

记录高CPU利用率的线程ID,例如:12345

3、找到线程对应的sql语句
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = (SELECT THREAD_ID FROM performance_schema.threads a WHERE THREAD_OS_ID = 12345);

 

我自己还是查了一下performance_schema.threads,找到THREAD_OS_ID的值和 top -Hp xxxx 对应

 

在THREADS中查看PROCESSLIST_INFO的内容,有某条sql的记录,这条sql就是耗费CPU的sql,

发现这个sql中where业务表某个字段,这个业务表也就是6万多条数据,于是将这个字段设置为索引,眼睁睁的看到占用CPU从300%跌倒20%左右。

因为一件蠢的事情CPU占用,总算的有了找问题的思路 

posted @ 2024-09-30 21:15  奥雷连诺  阅读(24)  评论(0编辑  收藏  举报