在 Knative serving 中,每個修訂版本都會自動調整所需容器執行個體數量,以處理所有傳入要求。如果修訂版本未收到任何流量,系統預設會將容器執行個體數量調度為零。不過,如有需要,您可以變更這項預設設定,使用「最少執行個體」設定指定要保持閒置或「暖機」狀態的執行個體。
排定的執行個體數量會受到下列因素影響:
- 處理要求所需的 CPU 數量
- 並行設定
- 容器執行個體數量上限設定
- 容器執行個體數量下限設定
在某些情況下,您可能會基於成本控管考量,或為了與服務使用的其他資源更相容,而想限制可啟動的容器執行個體總數。舉例來說,Knative 服務可能與資料庫互動,而該資料庫只能處理特定數量的並行開放連線。
容器執行個體數量上限簡介
如要限制可並行啟動的執行個體總數,請使用容器執行個體數量上限設定,詳情請參閱「設定容器執行個體數量上限」。
超過執行個體數量上限
在正常情況下,修訂版本會建立新的執行個體進行擴充,以處理外來流量負載。不過,如果您設定了執行個體數量上限,在某些情況下,執行個體數量可能不足以因應流量負載。在這種情況下,外來要求佇列最長為 60 秒。在此 60 秒期間,如果執行個體完成處理要求,就可用於處理佇列要求。如果 60 秒期間沒有執行個體可用,要求就會失敗,並在 Cloud Run 上顯示 429
錯誤代碼。
資源調度保證
上限執行個體限制是一種上限。設定高限制並不代表修訂版本能夠擴充至指定的容器執行個體數量。只代表容器執行個體在不超過限制的情況下,在任何時間點能夠共存的數量。
流量尖峰
在部分情況下 (例如流量迅速增加),Knative 服務可能會在短暫期間內,建立略多於指定上限執行個體值的容器執行個體。如果您的服務無法承受這樣的臨時行為,可以考慮採用安全餘裕,設定較低的上限執行個體值。
部署作業
部署新修訂版本時,Knative 服務會逐漸將流量從舊修訂版本遷移至新修訂版本。由於上限執行個體限制是針對各個修訂版本設定,您在部署後可能會暫時超過指定限制。
閒置執行個體及盡可能減少冷啟動
只有在執行個體處理要求時,才會耗用 Kubernetes 資源,但這不代表 Knative Serving 會在執行個體處理完所有要求後立即關閉。為盡量降低冷啟動的影響,Knative 服務可能會讓部分執行個體保持閒置狀態。這類執行個體可在流量突然激增時處理要求。
舉例來說,容器執行個體完成處理要求後,可能會維持閒置狀態一段時間,以免需要處理其他要求。閒置容器執行個體可能會持續佔用資源,例如開放資料庫連線。不過,Cloud Run 的CPU 不會提供
如要永久保留閒置執行個體,請使用 min-instance
設定。
後續步驟
- 如要管理 Knative 服務的執行個體數量上限,請參閱設定容器執行個體數量上限。
- 如要管理每個容器執行個體處理的並行要求數量上限,請參閱設定並行。
- 如要最佳化並行設定,請參閱調整並行的開發提示。
- 如要指定要保持執行的閒置執行個體,盡量減少延遲時間或首次要求時的冷啟動情形,請參閱使用
min-instance
啟用閒置執行個體。