關於在Linux環境下,Mysql占用CPU使用率100%的優化


今天使用 MobaXterml 連接上一台物聯網的Linux服務器的使用,發現該服務器的CPU使用率一直在100%左右。

使用 top 命令發現Mysql占用了大量的CPU

用數據庫工具 Navicat premiumroot 的身份連接數據庫,執行查詢語句:

show PROCESSLIST;

發現主要是這條查詢語句導致Mysql占用CPU的資源:

 

於是采取以下步驟進行優化:

1.使用字段`contect_id`, `come_from`建立組合索引;

2.暫停物聯網服務,使用查詢語句:TRUNCATE  Table c_clients ,重置了這張表。(這個命名不要隨便執行,會刪除所有數據,並重置表,ID會從1重新開始,我這張表只保存當前在線的客戶端數據,所以無所謂)。

這使用重新查看CPU占用情況,發現已經下降到了60%左右的占用率。

 

 繼續深入優化:

1.使用查詢語句:show variables like 'slow_query%',查看Mysql是否開啟了慢日志,以及慢日志的存儲位置;

 

2.得到慢日志存儲位置后,在 中使用Linux命令: cat -n  /usr/local/mysql/data/slow_1.log | tail -n 100,查看慢日志的最后100行記錄(由於日志太大,最好不要一次性全部打開,否有有可能占滿CPU和內存導致服務器死機)

 

 

 利用Mysql慢日志分析,如果是select語句比較慢,那需要針對性的建立索引。如果是insert慢,可以適當的刪除索引。如果是update慢,可以根據實際情況,刪除或添加索引。

最后優化完,CPU回歸了平靜。

 


免責聲明!

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



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