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