服务器CPU100%的排查日志
早上发现访问服务器非常慢,赶紧登录控制台,原来CPU正在满负荷运行。
一、SSH到服务器,先使用top命令确定一下当前的服务器负载:
top
发现 mysql 的 CPU 占用已经达到了 375%(因为是4核心),那就初步确定是 mysql 的问题了。
二、看看哪些SQL造成的CPU占用过高
执行一条语句,用来检索当前执行时间最长的sql:
SELECT * FROM information_schema.PROCESSLIST
WHERE command != 'Sleep'
ORDER BY time DESC LIMIT 20;
排到上面的都是占用时间比较长的,发现都是几个数据量和并发都比较大的表。
处理方式也很简单,直接加索引就好,过一会CPU负载就会慢慢降下来。
三、停止个别超时或挂起的SQL线程
添加索引后,一般情况下很多的慢SQL都会有所改善,但如果还有个别SQL一直在假死状态,就需要手动kill掉才能回收服务器资源。
执行以下SQL,拼接出需要手动kill的命令:
SELECT concat('kill ', id, ';') FROM information_schema.PROCESSLIST
WHERE command != 'Sleep' AND time > 200
ORDER BY time DESC;
复制并执行生成的kill命令,过一会CPU就会缓过劲来了。
版权声明: 本文为博主 网无忌 原创文章,欢迎转载,但请务必标注原文链接。