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