Azure Functions 中的事件驅動調整

在使用情況和進階方案中,Azure Functions 會藉由新增 Functions 主機的更多執行個體來調整 CPU 和記憶體資源。 執行個體數目取決於觸發函式的事件數量。

使用量方案中的每個 Functions 主機執行個體都有設限,通常是 1.5 GB 的記憶體和一個 CPU。 主機的執行個體是整個函數應用程式,表示函數應用程式內的所有函式都會共用執行個體內的資源,且同時進行規模調整。 共用相同使用情況方案的函數應用程式會個別進行調整。 在進階方案中,方案大小會決定該執行個體上該方案中所有應用程式的可用記憶體和 CPU。

函式程式碼檔案會儲存在函式主要儲存體帳戶的 Azure 檔案儲存體共用上。 當您刪除函數應用程式的主要儲存體帳戶時,將會刪除函式程式碼檔案,且無法復原。

執行階段調整

Azure Functions 使用名為縮放控制器的元件來監視事件的速率,並判斷是擴增或縮減。 縮放控制器會在每種觸發程序類型使用啟發學習法。 例如,當您使用 Azure 佇列儲存體觸發程序時,其會使用以目標為基礎的調整

Azure Functions 的縮放單位是函數應用程式。 當函數應用程式擴增時,會配置更多資源來執行 Azure Functions 主機的多個執行個體。 反之,當計算需求降低時,縮放控制器會移除 Functions 主機的執行個體。 執行個體的數目最終會在函數應用程式中沒有任何函式執行時縮減。

Scale controller monitoring events and creating instances

冷啟動

在函數應用程式閒置幾分鐘後,平台可能會調整應用程式減少至零的執行個體數量。 下一個要求會將調整的延遲從零增加至一。 此延遲稱為「冷啟動」。 函數應用程式所需的相依性數目可能會影響冷啟動時間。 冷啟動更會是同步作業問題,例如必須傳回回應的 HTTP 觸發。 如果冷啟動會影響函式,請考慮在進階方案中執行,或在已啟用一律開啟設定的專用方案中執行。

了解調整行為

縮放比例會因為各種因素而有所不同,應用程式也會因為選取的觸發程序和語言不同,而進行不同的規模調整。 以下為調整行為需注意的一些複雜細節:

  • 執行個體數目上限:單一函數應用程式只能擴增至該方案允許的上限。 單一執行個體可能會一次處理一個以上的訊息或要求,因此並未設定同時執行的數目限制。 您可以視需要指定較低的上限來節流調整。
  • 新執行個體速率:若為 HTTP 觸發程序,最多會每秒配置一次新執行個體。 若為非 HTTP 觸發程序,系統會以最多每 30 秒一個的速率配置新執行個體。 在進階方案中執行時,調整速度會更快。
  • 以目標為基礎的調整:以目標為基礎的調整可為客戶提供快速且直覺的調整模型,且目前支援對服務匯流排佇列和主題、儲存體佇列、事件中樞和 Cosmos DB 延伸模組進行以目標為基礎的調整。 請務必檢閱以目標為基礎的調整,以了解其調整行為。

限制擴增

您可能會想要限制應用程式用於擴增的執行個體數目上限。當下游元件 (如資料庫) 的輸送量受到限制時,這是最常見的案例。 根據預設,使用情況方案函式會擴增至多達 200 個執行個體,而進階方案函式會擴增至多達 100 個執行個體。 您可以藉由修改 functionAppScaleLimit 值,為特定應用程式指定較低的上限。 functionAppScaleLimit 可以設定為 0null,表示不受限制,或介於 1 和應用程式上限之間的有效值。

az resource update --resource-type Microsoft.Web/sites -g <RESOURCE_GROUP> -n <FUNCTION_APP-NAME>/config/web --set properties.functionAppScaleLimit=<SCALE_LIMIT>

相應縮小行為

事件驅動的調整會在對函式的需求降低時自動減少容量。 其做法是清空其目前函式執行的執行個體,然後將其移除。 此行為會記錄為清空模式。 目前執行中的函式寬限期可延長至 10 分鐘 (若為使用量方案應用程式) 和 60分鐘 (若為進階方案應用程式)。 事件驅動的調整和此行為不適用於專用方案應用程式。

下列考量適用於相應縮小行為:

  • 針對在 Windows 上執行的取用方案函式應用程式,預設只有在 2021 年 5 月之後建立的應用程式才會啟用清空模式行為。
  • 若要使用服務匯流排觸發程序為函式啟用正常關機,請使用 4.2.0 版或更新版本的服務匯流排擴充功能

可調整應用程式的最佳做法與模式

函式應用程式中有多個面向會影響其調整的規模,包括主機設定、執行階段耗用量和資源效率。 如需詳細資訊,請參閱效能考量文章中的延展性一節。 您也應了解在縮放函式應用程式後,連線會如何運作。 如需詳細資訊,請參閱如何管理 Azure Functions 中的連線

如需有關在 Python 和 Node.js 中調整的詳細資訊,請參閱 Azure Functions Python 開發人員指南 - 調整和並行Azure Functions Node.js 開發人員指南 - 調整和並行

計費模型

Azure Functions 價格頁面會詳細說明不同方案的計費方式。 使用量是在函式應用程式層級彙總,且只會計算函式程式碼執行的時間。 計費單位如下︰

  • 以十億位元組-秒 (GB-s) 為單位的資源取用量。 會計算為在函數應用程式中執行之所有函式的記憶體大小和執行時間組合。
  • 執行。 每次函式為回應事件觸發程序而執行,就算一次。

如需有關如何了解您的使用量帳單的實用查詢和資訊,請參閱帳單常見問題集

下一步

如需詳細資訊,請參閱下列文章: