全部產品
Search
文件中心

Elastic Compute Service:PID資源不足演練

更新時間:Apr 09, 2025

在作業系統中,PID(Process Identifier)是用於唯一標識進程的數字,可以在進程釋放後被重複利用。雖然很難將PID資源耗盡,但仍存在意外耗盡的情況,導致新進程無法建立,可能會導致業務掛起,從而影響業務能力。因此,有必要類比PID資源耗盡或主動類比業務掛起的情況,以檢測業務的高可用能力。

實現原理

本方案使用雲助手外掛程式ACS-ECS-TaskLimit,使用fork()方法建立進程,直至達到作業系統的pid_max或threads-max中的較小值,從而阻塞新進程/線程的建立。

使用指南

演練準備

請確保您的ECS執行個體已安裝雲助手Agent,並且雲助手狀態正常。具體操作,請參見查看雲助手狀態及異常狀態處理

故障注入

  1. 登入ECS執行個體。

    具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體

  2. 使用具有sudo存取權限的使用者,運行雲助手外掛程式ACS-ECS-TaskLimit

    重要

    ACS-ECS-TaskLimit外掛程式不影響已經存在的業務進程,僅影響新業務進程的建立。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-TaskLimit --params inject

    顯示如下所示時,說明雲助手外掛程式ACS-ECS-TaskLimit已啟動。

    image

  3. 查看故障注入是否成功。

    故障注入後,無法建立新的業務進程,建立新的業務進程都會提示-bash: fork: retry: Resource temporarily unavailable

    image

故障恢複

您可以使用以下方式,移除注入的故障。

  • 方法一(推薦):重啟執行個體,具體操作,請參見重啟執行個體

  • 方法二:如能正常執行命令,執行以下恢複命令。

    重要

    該指令可能由於系統阻塞而導致執行失敗。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-TaskLimit --params recover