记一次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占用,总算的有了找问题的思路
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器