應用(例如:Java應用)在啟動階段通常會消耗比應用正常運行時更多的CPU資源。這種高資源消耗會導致水平Pod自動伸縮器(HPA)在冷啟動階段記錄到異常高的指標值,從而影響HPA的準確性和性能調整。如果在應用中配置了健康檢查,只有在應用實例通過業務就緒檢查(Readiness)后,HPA才會將該應用實例的資源使用情況計入到彈性指標中。通過這種方式,HPA控制器可以更準確地評估應用實例的實際資源需求,避免因啟動階段的資源峰值而導致不合理的擴縮容操作。本文以Java應用為例進行演示說明。
測試說明
為了模擬Java應用的冷啟動階段,本文通過使用Shell腳本來提高Java應用單實例的CPU使用率來進行演示說明。
當Shell腳本執行時,應用單實例的CPU使用率保持在約50%,以模擬應用在啟動過程中對CPU資源的高需求。停止腳本后,應用單實例的CPU使用率恢復到正常水平,表明應用已啟動完成并進入穩定運行狀態,此時應用對CPU資源的需求回歸常規。
前提條件
已創建Java應用。具體操作,請參見通過代碼包部署Java應用或通過鏡像部署Java應用。
為了方便測試,將應用的實例數設置為一個。
步驟綜述
為應用添加彈性策略:此步驟是為了設置應用實例的擴容閾值和檢測CPU實時的使用情況。
編寫Shell腳本:通過Shell腳本提高單實例的CPU使用率,以模擬應用冷啟動階段對CPU資源的高需求,也是為了給后續的測試步驟做好準備。
未配置健康檢查時對彈性指標進行驗證:通過此步驟,證明了在不配置Readiness檢查時,CPU資源的使用情況會被實時地同步至HPA控制器中,并用于決定是否需要擴容實例數。
配置健康檢查后對彈性指標進行驗證:在配置了Readiness檢查后,單實例的CPU使用率升高并不會導致實例數在特定的時間段內產生變化。證明了CPU資源的使用情況在配置的延遲時間內不會被同步至HPA控制器中。
后續操作:在測試任務完成后,終止Shell腳本的進程,以避免不必要的資源浪費。
1. 為應用添加彈性策略
登錄SAE控制臺,在左側導航欄選擇 ,然后選擇目標地域和目標命名空間,最后單擊目標應用名稱。
在目標應用的基礎信息頁面,單擊實例列表頁簽,然后在彈性伸縮區域單擊添加彈性策略。
在添加彈性策略面板,配置以下信息,然后單擊確認。
配置項
示例
說明
策略類型
監控指標策略
選擇策略類型為監控指標策略。
策略名稱
demo
自定義彈性策略名稱。
觸發條件
指標類型:CPU使用率
目標值:40%
指標類型選擇CPU使用率,并自定義15秒內應用所有實例平均CPU利用率。
實例數設置
應用最小實例數:1
應用最大實例數:5
自定義應用最小實例數和應用最大實例數。
在實例列表頁簽的彈性策略區域,啟用已成功添加的彈性策略。
2. 編寫Shell腳本
在目標應用的基礎信息頁面,單擊實例列表頁簽,然后單擊應用實例操作列的Webshell,進入實例的字符界面。
在字符界面,創建Shell腳本并為其添加可執行權限。
說明本Shell腳本為簡單的示例腳本。
創建
demo.sh
腳本。#!/bin/bash while true; do # 這是一個空循環,只是為了消耗應用實例的CPU資源。 true done
為腳本添加可執行權限。
chmod +x demo.sh
3. 未配置健康檢查時對彈性指標進行驗證
未執行Shell腳本之前,查看單實例CPU使用率及實例個數。
登錄Webshell,運行Shell腳本。
./demo.sh
在Shell腳本執行的過程中,查看單實例CPU使用率及實例個數。
說明此過程會隨著單實例CPU使用率的提升,實例數也會隨之增加(自動擴容),直至擴容至在彈性策略中設置的最大實例數。
說明通過觀察CPU使用率和實例數,當CPU使用率超過在彈性策略中設置的擴容觸發值時,系統會為了滿足應用實例對CPU資源的需求,在極短的時間內自動進行擴容,直到擴容至設置的實例數上限。這表明CPU的使用情況已同步至HPA控制器,并且HPA控制器根據當前的CPU使用情況對應用實例進行了擴容。
4. 配置健康檢查后對彈性指標進行驗證
在執行此步驟之前,需要使用kill -15 ${PID}
命令結束Shell腳本的進程,并將實例數縮容至一個。
4.1 為應用配置健康檢查
進入目標應用的基礎信息頁面,單擊部署應用,然后在部署應用面板,配置以下信息。
在基礎信息設置區域,修改版本號。
在部署應用面板的應用健康檢查設置區域,啟用應用業務就緒檢查(Readiness配置),然后選擇檢查方式為TCP端口檢查,并設置TCP端口和延遲時間(秒)。
重要本文以設置TCP端口檢查為例進行演示說明。具體配置健康檢查的信息,請參見設置健康檢查。
如果您只想消除應用冷啟動對彈性指標的影響,只需要配置Readiness檢查即可。
配置的延遲時間應盡可能接近應用的冷啟動時間,可以大于應用的冷啟動時間,但不能小于應用的冷啟動時間。
單擊確定。
4.2 查看應用單實例的CPU使用率及實例數的變化
未執行Shell腳本之前,查看單實例CPU使用率及實例個數。
登錄Webshell,運行Shell腳本。
./demo.sh
在Shell腳本執行的過程中,查看單實例的CPU使用率及實例個數。
當應用業務就緒檢查(300秒)成功后,查看單實例的CPU使用率及實例個數。
說明通過觀察CPU使用率和實例數,發現在應用業務就緒檢查的時間段內(300秒),CPU資源使用率已超過彈性策略設置的擴容觸發值,并自動擴容了一個實例。然而,在這300秒的延遲時間內,盡管CPU使用率仍然很高,但HPA控制器并未繼續進行擴容,這表明在這段時間內,CPU使用情況沒有被同步到HPA控制器。
當應用業務就緒檢查(300秒)成功后,如果CPU使用率依舊超過了在彈性策略設置的擴容觸發值,應用實例會繼續進行擴容,這表明在業務就緒檢查完成后,CPU資源的使用情況再次被同步到HPA控制器。
5. 后續操作
通過Webshell登錄執行了Shell腳本的實例,使用kill -15 ${PID}
命令結束Shell腳本的進程,以避免資源的不必要浪費。