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