RDS執行個體CPU一直被打滿
1、問題描述
版本:阿裡雲專有雲V2版本
客戶回報,通過drds執行SQL比較慢,之前很快就能執行完的SQL,需要三四秒才可以執行成功。
2、問題排查
首先排查drds的狀況,通過drds manager發現該drds下面有兩個docker節點,并且都是正常的。
檢查drds下面挂的rds的執行個體狀态,一共有四個rds,其中一個rds的CPU一直被打滿,并且卡頓時間跟客戶描述的一緻。

問題已經基本定位到時其中一個RDS執行個體的CPU被打滿,導緻查詢緩慢,拖慢了整個drds執行個體。
*
執行個體的cpu被打滿,一般是由兩種情況:
1、慢SQL,全表掃描等。此時qps不高,但是查詢占用了大量的邏輯IO,需要掃描大量的資料行,導緻CPU資源被大量消耗
2、qps高,業務量高峰。此時慢SQL不是問題所在。那就需要考慮從實際的規格和架構方面入手,可以提高rds的規格配置,增加隻讀執行個體等。
回到問題,登入到該rds。show processlit發現有很多慢查詢,如圖:
可以明顯看到這種SQL執行時間特别長,達到了21秒,并且占用的邏輯讀也特别高。問題還是在慢SQL方面。
那它的備庫現在什麼情況呢,通過show slave status發現。主備已經停止同步。
此時已經不能登入到備庫,檢視mysql程序,已經挂掉。
手動拉起mysql程序。後可以登入了。可以看到剛拉起主備延遲很高
3、問題解決
慢SQL已經回報給客戶進行處理,并且通知研發注意這種SQL,應用設計和開發過程中,要考慮查詢的優化,遵守 MySQL 優化的一般優化原則,降低查詢的邏輯 IO,提高應用可擴充性。
客戶将SQL kill處理後,該rds的cpu恢複正常,并且從drds查詢速度也恢複正常,問題解決。