控制資源調度行為

Cloud Functions 之中的上限執行個體,可讓您限制函式回應外來要求時的資源調度程度。

Cloud Functions 是以建立新的函式執行個體進行資源調度。其中每個執行個體每次只能處理一個要求,因此要求量大幅激增時,可能會導致建立許多執行個體。

通常這種情形是可以接受的,不過在部分情況下,您可能會想限制在任何特定時間能夠共存的執行個體總數。例如函式可能與資料庫互動,而該資料庫只能處理特定數量的並行開放連線。

使用上限執行個體

您可在部署期間針對個別函式設定上限執行個體。每個函式都有自己的上限執行個體限制。函式會獨立資源調度,不受彼此影響。

設定上限執行個體限制

如要使用 gcloud 指令列工具設定上限執行個體限制,請在部署時間使用 --max-instances 標記:

gcloud beta functions deploy FUNCTION_NAME --max-instances 10 FLAGS...

在以上範例中,FLAGS... 代表您在部署函式期間傳送的其他選項。如需 deploy 指令的完整參考資料 (包括 Beta 版功能),請參閱 gcloud beta functions deploy

您也可以在 GCP 主控台建立函式期間設定上限執行個體。方法如下:

  1. 前往「Cloud Functions Overview」(Cloud Functions 總覽) 頁面

  2. 按一下 [Create function] (建立函式)

  3. 填寫您函式的必填欄位。

  4. 請按 [More] (更多) 展開進階設定。

  5. 請在「Maximum function instances」(函式執行個體上限) 區段輸入所需的值。

清除上限執行個體限制

如果您要清除對函式設定的限制,可於部署時間使用 --clear-max-instances 標記:

gcloud beta functions deploy FUNCTION_NAME --clear-max-instances

您也可以在 GCP 主控台清除上限執行個體限制:

  1. 前往「Cloud Functions Overview」(Cloud Functions 總覽) 頁面

  2. 請點選現有函式前往其詳細資料頁面。

  3. 按一下 [Edit] (編輯)

  4. 請按 [More] (更多) 展開進階設定。

  5. 請在「Maximum function instances」(函式執行個體上限) 區段輸入「0」或讓欄位空白。

限制與最佳做法

本節提供使用上限執行個體的準則。

超過上限執行個體

在正常情況下,函式會建立新的執行個體進行擴充,以處理外來流量負載。不過若您已經設定上限執行個體限制,就可能遭遇執行個體不足無法因應流量負載的情況。在這種情況下,外來要求佇列最長為 60 秒。在此 60 秒期間,如果執行個體完成處理要求,就可用於處理佇列要求。如果 60 秒期間沒有執行個體可用,要求就會失敗。

資源調度保證

上限執行個體限制是一種上限。設定高限制並不代表函式能夠擴充至指定的執行個體數量,只代表執行個體在不超過限制的情況下,在任何時間點能夠共存的數量。

流量尖峰

Cloud Functions 在部分情況下 (例如流量迅速增加),可能會在短暫期間內,建立略高於指定上限執行個體值的執行個體。如果您的函式無法承受這樣的臨時行為,可以考慮採用安全餘裕,設定較低的上限執行個體值,讓函式能夠承受。

部署

您部署新版的函式時,Cloud Functions 會逐漸將流量由舊版遷移至新版。由於上限執行個體限制是針對各個函式版本設定,您在部署後可能會暫時超過指定限制。

閒置執行個體及盡可能減少冷啟動

為了盡可能降低冷啟動的影響,Cloud Functions 通常會針對函式維持保留的閒置執行個體。這類執行個體可在流量突然激增時處理要求。

例如執行個體完成處理要求,可能會維持閒置狀態一段時間,以免需要處理其他要求。閒置執行個體可能會持續佔用資源,例如開放資料庫連線,以免需要處理其他要求。

「0」值

將上限執行個體設為「0」,會清除現有的上限執行個體限制。設定為「0」值不會讓函式暫停。

獲得協助與報告錯誤

如果您在 Beta 版使用上限執行個體時遇到任何問題,請在 Cloud Functions Beta 版使用者群組發表貼文。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Functions Documentation