並行

在 Knative serving 中,每個修訂版本都會自動調整所需容器執行個體數量,以處理所有傳入要求。

當越來越多的容器執行個體處理要求時,便會使用更多的 CPU 和記憶體,導致費用水漲船高。需要啟動新的容器執行個體時,處理要求可能需要更多時間,進而降低服務效能。

為提供更多控制權,Knative 服務提供「並行」設定,可指定特定容器執行個體可同時處理的要求數量上限。

並行值

根據預設,Knative 服務容器執行個體可同時接收多個要求 (最多 80 個)。請注意,相較之下,函式即服務 (FaaS) 解決方案 (例如 Cloud Run functions) 的並行值是固定的 1。

雖然您應該使用預設並行值,但如有需要,可以降低並行上限。舉例來說,如果程式碼無法處理並行要求,請將並行設為 1

指定的並行值是上限,如果執行個體的 CPU 使用率已偏高,Knative 服務可能不會傳送這麼多要求給特定容器執行個體。

下圖顯示並行設定如何影響處理傳入並行要求所需的容器執行個體數量:

並行圖表

何時將並行限制在一次一個要求

您可以限制並行,如此一來,一次只會傳送一個要求到每個執行中的容器執行個體。若出現以下狀況,您就可以考慮限制並行:

  • 每個要求都佔用大部分可用 CPU 或記憶體。
  • 容器映像檔在設計時並未考慮同時處理多個要求,例如容器需依賴兩個要求無法共用的全域狀態。

請注意,並行 1 可能會對資源調度效能造成負面影響,因為許多容器執行個體需要開始處理大幅增加的傳入需求。

個案研究

下列指標顯示的用途是:400 個用戶端每秒向 Knative 服務傳送 3 個要求,而該服務的並行要求數上限設為 1。頂端的綠線代表一段時間內的請求數,底部的藍線則代表為處理請求而啟動的容器執行個體數量。

並行設為 1

下列指標顯示 400 個用戶端每秒向 Knative 服務傳送 3 個要求,而該服務的並行要求數量上限設為 80。綠色頂端線條顯示一段時間內的要求,藍色底線則顯示為處理要求而啟動的容器執行個體數量。請注意,處理相同要求量所需的執行個體數量大幅減少。

並行數設為 80

後續步驟

如要管理 Knative 服務的並行,請參閱設定並行

如要最佳化並行設定,請參閱調整並行的開發提示