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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM