根據預設,Cloud Run 服務的執行個體數量上限,會根據下列相關配額限制中最低的值決定。每個區域的上限也會受到 Cloud Run 服務的 CPU 和記憶體設定影響。具體來說,服務可用的執行個體數量上限,是下列各項數量的最小值:
- 地區執行個體限制配額基準值除以所要求的 1 CPU 倍數
- 地區執行個體限制配額基準值除以所要求的 2 GB 記憶體倍數
- 區域 CPU 配額除以服務的 CPU 設定。
- 區域記憶體配額除以服務的記憶體設定。
- 區域 GPU 配額 (不論是否有可用區備援機制),除以服務的 GPU 設定。
舉例來說,如果基準執行個體限制配額為 1000 個執行個體,且記憶體為 4 GB 或 2 CPU,以及 2000 個 vCPU 限制和 4000 GiB 限制,則有效限制為 500。
您可以在控制台的配額頁面中,查看所在區域的每個區域執行個體配額基準限制。
如何提高區域基準配額
如果您需要在部署 Cloud Run 服務的區域中使用更多執行個體,可以申請提高配額。
設定最大執行個體的最佳做法
以下各節將說明設定服務的最大執行個體限制的最佳做法。
事件驅動服務的最佳執行個體數量上限
以事件為準的服務 (例如函式) 可能會因收到的事件而出現不規則的流量尖峰。如要為這些服務決定最佳的最大執行個體值,您必須考量服務叫用時間、預期的平均叫用次數、叫用次數高峰期,以及叫用失敗的容錯能力等因素。
一般來說,建議您先將最大執行個體值設為 3,然後監控叫用失敗情況,並視需要調高最大執行個體值。
在所有執行個體都忙碌時處理要求
在正常情況下,服務會建立新的執行個體進行擴充,以處理外來流量負載。不過若您已經設定上限執行個體限制,就可能遭遇執行個體不足無法因應流量負載的情況。
在這種情況下,Cloud Run 會嘗試提供新的外來要求,最長為 30 秒:
- 如果執行個體在這個時間範圍內完成處理要求,可能會開始處理新的內送要求。
- 如果沒有可用的執行個體,要求就會失敗。
Cloud Run 會自動儲存事件,直到有足夠的容量可供事件導向服務使用為止。
超出 Cloud Run 調度能力的執行個體上限
指定上限執行個體限制時,您會指定上限。設定較高的限制並不代表服務會擴充至指定的執行個體數量,只代表執行個體在不超過限制的情況下,在任何時間點能夠共存的數量。
此外,設定執行個體數量上限可能會影響 Cloud Run 用來滿足流量需求的調整策略。一般來說,Cloud Run 會優先遵守您指定的上限,而不會擴大規模並可能超出上限。
應付突然爆增的流量
在某些情況下 (例如流量迅速增加),Cloud Run 可能會在短暫期間內,建立略高於指定上限執行個體值的執行個體。如果您的服務無法承受這樣的臨時行為,可以考慮採用安全餘裕,設定較低的上限執行個體值,讓服務能夠承受。
部署作業
您部署新修訂版本時,Cloud Run 會將流量從舊修訂版本遷移至新修訂版本。由於每個修訂版本都有各自的上限執行個體限制,您在部署後可能會暫時超過指定限制。
舉例來說,服務可能有 5 個執行個體的上限。在一般情況下,服務會在處理要求時擴充至 5 個執行個體。部署新修訂版本時,新修訂版本會有 5 個的最大執行個體限制。
當您部署新版本時,先前版本已處理的要求不會中斷。相反地,這些要求會繼續進行。新的傳入要求會由新部署的服務修訂版本處理。
因此,在部署新修訂版本後的期間,前述範例中的服務最多可能會有 10 個執行個體 (每個修訂版本 5 個)。先前修訂版本的執行個體終止所需的時間,取決於這些執行個體處理任何有效要求所需的時間。在選擇適當的上限執行個體限制時,請務必考量這項額外因素。