Serverless執行個體RCUAuto Scaling的耗時通常為秒級,極小機率下可能因為跨機彈性擴容而耗時3~5分鐘。如果您對特定時段的穩定性有嚴格要求,您可以定時配置Serverless執行個體的RCU,提前增加RCU數量。本文將介紹如何對RCU的範圍進行周期性配置。
使用情境
Serverless執行個體會根據CPU和記憶體的負載情況進行Auto Scaling。自動彈性擴容的條件為CPU或記憶體使用量率達到60%~80%的閾值範圍。若在特定時段對CPU或記憶體的效能穩定性有較高要求,可提前手動調整RCU的下限配置。
彈性擴容的方式分為本地彈性擴容和跨機彈性擴容兩種。其中本地彈性擴容的耗時為秒級,跨機彈性擴容的耗時約為3~5分鐘。在99.8%的情境下,本地的秒級彈性擴容可以滿足Serverless的彈性擴容需求。然而,在本地資源不足的情況下,Serverless執行個體的彈性擴容需要跨機進行。由於跨機需要的時間較長,可能會對業務造成一定程度的影響。在特定時段內,為避免因自動彈性擴容未能及時完成而造成的影響,建議提前將RCU的上限和下限設定為相同的數值。
解決方案
使用定時任務調用ModifyDBInstanceSpec - 變更RDS執行個體API介面,在特定時段修改RCU的上下限,特定時段結束後恢複到預設的RCU上下限。
使用樣本
如果需要在特定時段提升RCU下限,建議在該時段前10分鐘,定時提升RCU下限,為可能出現的跨機情況預留一定時間,以確保特定時段內執行個體的穩定性。
例如,某項業務在早高峰時間08:00~09:00希望保證4~8 RCU的配置,可以在07:50分將RCU的下限提升至4,在09:00再恢複到0.5~8 RCU的預設配置。
Python樣本
本樣本使用APScheduler配置定時任務。
完成RAM授權、準備Python環境、配置環境變數、安裝環境依賴等操作。
開啟命令列視窗執行如下命令,安裝APScheduler。
pip install apscheduler
下載範例程式碼。
訪問ModifyDBInstanceSpec,進入該介面在OpenAPI門戶的調試地址。
在參數配置頁簽,配置如下參數。
在右側的SDK樣本頁簽,選擇Python語言,單擊下載完整工程按鈕,下載範例程式碼包。
本地解壓並進入alibabacloud_sample目錄。
參數
描述
取值
DBInstanceId
執行個體 ID。
rm-bp1t8v93k6e15****
PayType
執行個體當前的付費類型。
Serverless
Direction
執行個體變更配置類型。
Serverless
MaxCapacity
RCU(Rds Capacity Unit)自動擴縮範圍的上限。
8.0
MinCapacity
RCU(Rds Capacity Unit)自動擴縮範圍的下限。
0.5
AutoPause
是否開啟Serverless執行個體的智能暫停和啟動。
false
SwitchForce
是否開啟Serverless執行個體的強制擴縮容。
true
說明建議下載SDK V2.0版本樣本工程。
修改代碼,配置定時任務。
修改sample.py,增加APScheduler定時任務的內容,使用Cron觸發器以設定定時任務的執行時間。例如,
scheduler.add_job(my_scheduled_job, 'cron', hour=8, minute=0)
代表每天的08時00分00秒。若您計劃每日07:50設定RCU範圍為[4, 8],並在每日09:00將RCU範圍恢複為[0.5, 8],範例程式碼如下。
Java樣本
本樣本使用Spring Schedule配置定時任務。
本樣本需要安裝Java 1.8以上開發環境。
完成RAM授權、配置環境變數等操作。
下載樣本程式並在本地解壓。
修改
ScheduleTask.java
的內容,根據實際情況配置定時任務。配置Cron運算式以設定定時任務的執行時間。其中,
cron = "秒 分 時 日 月 周"
,詳情請參見Cron。例如,
@Scheduled(cron = "0 0 8 * * ? ")
代表每天的08時00分00秒。若您計劃每日07:50設定RCU範圍為[4, 8],並在每日09:00將RCU範圍恢複為[0.5, 8],範例程式碼如下。部分參數的含義如下,請用實際數值進行替換。
參數
描述
樣本
RegionId
執行個體所屬地區。
cn-hangzhou
DBInstanceId
執行個體ID。
rm-bp1t8v93k6e15****
PayType
執行個體當前的付費類型。
Serverless
Direction
執行個體變更配置類型。
Serverless
MaxCapacity
RCU自動擴縮範圍的上限。
8.0
MinCapacity
RCU自動擴縮範圍的下限。
0.5
AutoPause
是否開啟Serverless執行個體的智能暫停和啟動。
false
SwitchForce
是否開啟Serverless執行個體的強制擴縮容。
true