mysql进程占用cpu居高不下处理

1、top #使用top命令查看CPU占用进程,确认mysql进程占用CPU资源过大
 
2、首先考虑磁盘占用问题,清理日志文件释放空间
 
df -h #查看磁盘空间占用
du -h #查看当前文件夹或文件大小
ls -lh $(find / -type f -size +100M) #查找大于100M的文件
#检查清理nginx日志及其他日志文件。
 
3、清除服务器缓存
 
free -m #查看缓存的命令,其中buff/cache项为缓存占用
 
#清理缓存的命令 
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
 
4、mysql 调优,数据库数据激增,数据表需要进行维护
 
#查看消耗时间长的sql进程
show full processlist;
select id, db, user, host, command, time, state, info from information_schema.processlist where command != 'Sleep' order by time desc ;
 
#根据time 和info信息分析哪里的问题,可能是没加索引导致查询时间过长
 
#kill掉时间比较久的查询,在观察mysql的占用cpu的情况
 
select concat('kill ', id, ';') from information_schema.processlist where command != 'Sleep' and time > 500 order by time desc ;
 
#执行kill id 杀死查出来的进程
 
kill id
 
5、通过第四步,可以看出那些语句的时间超过500秒导致卡死,肯定是对应的表的问题,将对应的数据表进行优化或者拆分进行解决
 
 
参考文章:
 
CentOS CPU占用100%居高不下之mysql调优:
 
mysql show full processlist 分析问题

但行好事,莫问前程!

本文来自博客园,作者:yangphp,转载请注明原文链接:https://www.cnblogs.com/ypeih/p/15391227.html

原文地址:https://www.cnblogs.com/ypeih/p/15391227.html