CPU利用率是衡量業務系統是否健康的一個重要指標,為使業務達到足夠的穩定性,CPU利用率需保持在合理的范圍內。過高的CPU利用率會導致業務延遲甚至中斷。通過注入高CPU故障,可以測試業務系統在特定CPU負載時的反應、檢測系統恢復能力、驗證監控和告警機制的有效性等,并基于演練結果制定應對策略,確保生產環境高CPU利用率時系統能夠迅速恢復正常運行,降低業務中斷風險。
實現原理
本方案使用云助手插件ecs-fault-highcpu
,啟動注入進程AliFaultHighCpu
以特定占空比消耗CPU時間片。
使用指南
演練準備
請確保您的ECS實例已安裝云助手Agent,并且云助手狀態為正常。具體操作,請參見查看云助手狀態及異常狀態處理。
故障注入
使用具有sudo訪問權限的用戶,運行云助手插件
ecs-fault-highcpu
。sudo acs-plugin-manager --exec --plugin ecs-fault-highcpu --params inject,[cpu-percent=paramA],[cpu-list=paramB]
[]
內為可選故障注入參數,參數說明:cpu-percent(可選):要達到的CPU利用率,為空時默認100。
說明cpu-percent為注入進程的CPU利用率,總CPU利用率還會受到其他進程的影響。
cpu-list(可選):用于對特定vCPU綁定負載,如cpu-list=0-2/4表示對core 0、core 1、core 2和core 4綁定CPU負載,為空時對全部vCPU綁定負載。
查看故障注入是否成功。
在ECS實例中,執行
top
命令,CPU利用率上升,說明故障注入成功。其中內核態(sy)和用戶態(us)之和約等于設置的CPU利用率。在云監控監控圖表中,注入后CPU利用率上升,說明故障注入成功。
故障恢復
您可以使用以下方式,恢復ECS實例狀態。
方法一(推薦):在ECS實例中執行故障恢復命令,查看CPU利用率是否下降到故障注入前的水平。
sudo acs-plugin-manager --exec --plugin ecs-fault-highcpu --params recover
如下所示,CPU利用率已下降到故障注入前的水平,系統已恢復正常。
方法二:自行終止名為
AliFaultHighCpu
的進程。為不影響后續重復對該場景故障注入,終止
AliFaultHighCpu
進程后,再次執行方法一的故障恢復命令。sudo kill <AliFaultHighCpu PID>