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 分析問題