一次mysql cpu占用300%的排查过程记录
某个项目反馈,cpu一直占用300%不降下来,马上远程排查。记录下排查过程。
1、查询mysql 进程id,直接top 查看。果然一直都降不下来。
2、检查mysql服务是否正常,发现查询什么都挺正常的。怀疑是某个sql导致的。
3、根据进程id找mysql下的线程,看cpu占用很高的那几个。top -H -p 123
4、根据线程id到数据库查询信息。
SELECT * FROM `performance_schema`.threads T WHERE T.THREAD_OS_ID = id
在查询结果中有个字段PROCESLIST_INFO,里面就是执行的sql。
5、把sql拿出来看,发现只是一个简单的单表查询,根据某个字符串查结果,为什么会消耗这么高呢?打开索引就发现了,不知道是谁,建了个多列联合索引。
6、把上述sql里面的条件字段,从多列联合索引中删除,单独建了个索引,占用瞬间就下来了。
本文来自博客园,作者:Rolay,转载请注明原文链接:https://www.cnblogs.com/rolayblog/p/16449660.html