Azure Functions 進階方案

Azure Functions 彈性 進階版 方案是函式應用程式的動態縮放裝載選項。 如需其他主控方案選項,請參閱 主控方案一文

重要

Azure Functions 可在 Azure App Service 平台上執行。 在 App Service 平台中,主控進階方案函數應用程式的方案稱為彈性進階方案,SKU 名稱類似 EP1。 如果您選擇在進階方案執行函數應用程式,請務必使用以「E」開頭的 SKU 名稱來建立方案,例如 EP1。 以「P」開頭的 App Service 方案 SKU 名稱,例如 P1V2 (進階 V2 小型方案),實際上是專用主控方案。 因為是專用而非彈性進階方案,因此 SKU 名稱開頭為「P」的方案不會動態調整,而且可能會增加您的成本。

進階版 方案裝載為您的函式提供下列優點:

  • 避免使用暖實例的冷啟動。
  • 虛擬網路連線能力。
  • 支援 較長的運行時間持續時間。
  • 選擇 進階版 實例大小
  • 相較於取用方案,更可預測的定價。
  • 具有多個函式應用程式之方案的高密度應用程式配置。

當您使用 進階版 方案時,Azure Functions 主機的實例會根據傳入事件數目來新增和移除,就像取用方案一樣。 多個函式應用程式可以部署至相同的 進階版 方案,而方案可讓您設定計算實例大小、基底計劃大小和計劃大小上限。

計費

進階方案的計費是根據執行個體間配置的核心秒數和記憶體數目。 此計費與使用量方案不同,此方案是根據每秒資源耗用量和執行計費。 進階版計劃沒有執行費用。 不論函式為作用中或閑置,此計費都會產生每個作用中方案的每月最低成本。 請記住,進階版 方案共用配置實例中的所有函式應用程式。 若要深入瞭解,請參閱 Azure Functions 定價頁面

注意

每個進階方案一直至少有一個作用中(已計費)實例。

建立 進階版 方案

當您在 Azure 入口網站 中建立函式應用程式時,取用方案是預設值。 若要建立在 進階版 方案中執行的函式應用程式,您必須使用其中一個 Elastic 進階版 SKU 明確建立或選擇 Azure Functions 進階版 主控方案。 您建立的函式應用程式接著會裝載在此方案中。 Azure 入口網站 可讓您輕鬆地同時建立 進階版 方案和函式應用程式。 您可以在相同的 進階版 方案中執行多個函式應用程式,但它們必須在相同的作業系統 (Windows 或 Linux) 上執行。

下列文章說明如何使用 進階版 方案以程式設計方式建立函式應用程式:

消除冷啟動

當取用方案中未發生事件或執行時,您的應用程式可能會調整為零個實例。 當新事件傳入時,在您的應用程式上執行的新實例必須特製化。 根據應用程式而定,專門處理新的實例需要時間。 第一次呼叫上的這個額外延遲通常稱為應用程式冷啟動

進階版 方案提供兩項功能,可共同運作,以有效消除函式中的冷啟動:一律就緒的實例和預先使用的實例。 一律就緒的實例是未受調整影響之預先配置實例的類別,而預先設定的實例是因 HTTP 事件而調整的緩衝區。

當事件開始觸發應用程式時,會先路由傳送至一律就緒的實例。 當函式因為 HTTP 事件而變成作用中時,其他實例會以緩衝區的形式變暖。 這些緩衝實例稱為預先部署的實例。 此緩衝區可減少調整期間所需之新實例的冷啟動。

永遠就緒的執行個體

在 進階版 方案中,您可以讓應用程式一律準備好在指定的實例數目上。 不論負載為何,您的應用程式都會在這些實例上持續執行。 如果負載超過您永遠就緒的實例可以處理的內容,則會視需要新增更多實例,最多達指定的最大值。

此應用層級設定也會控制您方案的最小實例。 例如,請考慮在同一個 進階版 方案中有三個函式應用程式。 當其中兩個應用程式一律就緒實例計數設定為一個,而第三個實例中,它設定為五個,則整個方案的最小數目為 5。 這也會反映您計劃計費的實例數目下限。 我們每個應用程式支持的永遠就緒實例數目上限為 20。

您可以選取函式應用程式,移至 [平臺功能] 索引卷標,然後選取 [向外延展] 選項,設定 Azure 入口網站 中一律就緒的實例數目。 在函式應用程式編輯視窗中,一律為該應用程式特定的實例。

入口網站中的彈性調整設定

預熱的執行個體

預先部署的實例計數設定會在 HTTP 縮放和啟用事件期間提供暖化實例作為緩衝區。 預熱的執行個體會繼續緩衝處理,直到達到最大擴增限制為止。 預設預熱的執行個體計數為 1,而且在大部分情節中,此值應維持為 1。

請考慮較不常見的案例,例如在自定義容器中執行的應用程式。 因為自定義容器有長時間的熱身,所以您可以考慮增加預先部署實例的這個緩衝區。 只有在所有作用中的實例都使用中之後,預先建立的實例才會變成作用中。

您也可以定義在前置程式期間執行的熱身觸發程式。 您可以使用熱身觸發程式,在預先部署程式期間預先載入自定義相依性,讓函式準備好立即開始處理要求。 若要深入瞭解,請參閱 Azure Functions 熱身觸發程式

請考慮此範例,說明 Always-ready 實例和預先部署的實例如何一起運作。 進階函式應用程式已設定兩個一律就緒的實例,以及一個預先部署實例的預設值。

向外延展圖形

  1. 當應用程式閑置且未觸發任何事件時,會布建應用程式並使用兩個實例執行。 此時,您會針對兩個永遠就緒的實例計費,但不會針對預先部署的實例計費,因為不會配置任何預先部署的實例。
  2. 當您的應用程式開始接收 HTTP 流量時,要求會在兩個永遠就緒的實例之間進行負載平衡。 只要這兩個實例開始處理事件,就會新增 實例以填滿預先處理的緩衝區。 應用程式現在正以三個布建的實例執行:兩個一律就緒的實例,以及第三個預先作用中和非作用中的緩衝區。 您需支付這三個實例的費用。
  3. 隨著負載增加,您的應用程式需要更多實例來處理 HTTP 流量,該預先部署的實例會交換至作用中實例。 HTTP 負載現在會路由傳送至這三個實例,而第四個實例會立即布建以填滿預先部署的緩衝區。
  4. 直到達到應用程式的最大實例計數,或負載降低,才會繼續調整和前置處理順序,導致平臺在一段時間后相應減少。 未預先設定或啟動超過最大值的實例。

您無法在入口網站中變更預先設定的實例計數設定,您必須改用 Azure CLI 或 Azure PowerShell。

函式應用程式實例上限

除了 計劃最大高載計數之外,您還可以設定每個應用程式的最大數目。 您可以使用應用程式調整限制設定應用程式上限。 應用程式相應放大上限不能超過方案的最大高載實例。

私人網路連線能力

部署到 進階版 方案的函式應用程式可以利用 Web 應用程式的虛擬網路整合。 設定時,您的應用程式可以與虛擬網路內的資源通訊,或透過服務端點進行保護。 應用程式也可使用IP限制來限制連入流量。

在 進階版 方案中將子網指派給函式應用程式時,您需要具有足夠IP位址的子網,才能讓每個潛在實例使用。 我們需要至少有 100 個可用位址的 IP 區塊。

如需詳細資訊,請參閱 整合函式應用程式與虛擬網路

快速彈性調整

使用與取用方案相同的快速調整邏輯,為您的應用程式自動新增更多計算實例。 相同 App Service 方案中的應用程式會根據個別應用程式的需求,彼此獨立調整。 不過,相同 App Service 方案中的 Functions 應用程式會共用 VM 資源,以盡可能降低成本。 與 VM 相關聯的應用程式數目取決於每個應用程式的使用量和 VM 大小。

若要深入瞭解調整的運作方式,請參閱 Azure Functions 中的事件驅動調整。

運行時間較長

使用方案中的函式限制為單一執行 10 分鐘。 在 進階版 計劃中,執行持續時間預設為30分鐘,以避免執行失控。 不過,您可以修改host.json組態,讓 進階版 方案應用程式的持續時間不受限制,但有下列限制:

  • 平台升級可以觸發受控關機並停止函式執行。
  • 平台中斷可能會導致未處理的關機,並停止函式執行。
  • 有一個閑置的定時器會在 60 分鐘後停止背景工作,而沒有新的執行。
  • 相應縮小行為 可能會導致背景工作角色在 60 分鐘後關機。
  • 位置交換可以在交換 期間終止來源和目標位置上的執行。

遷移

如果您有現有的函式應用程式,您可以使用 Azure CLI 命令,在取用方案與 Windows 上的 進階版 方案之間移轉您的應用程式。 特定命令取決於移轉的方向。 若要深入了解,請參閱方案移轉

Linux 不支援此移轉。

進階版 方案設定

當您建立方案時,有兩個方案大小設定:實例數目下限(或計劃大小)和最大高載限制。

如果您的應用程式需要實例超過永遠就緒的實例,它可以繼續相應放大,直到實例數目達到計劃最大高載限制,或已設定的應用程式相應放大限制。 只有在實例執行並配置給實例時,才會以每秒為基礎向您收費。 平臺會盡最大努力將您的應用程式相應放大至已定義的上限。

您可以選取部署至該計劃之函式應用程式 設定 下的 Scale Out 選項,以在 Azure 入口網站 中設定計劃大小和最大值。

入口網站中的彈性方案大小設定

每個 進階版 方案的最小值至少為一個實例。 根據方案中應用程式所要求的永遠就緒實例,決定實際的實例數目下限。 例如,如果應用程式 A 要求五個永遠就緒的實例,而應用程式 B 要求相同方案中的兩個永遠就緒實例,則最小方案大小會判斷為五個。 應用程式 A 在所有五個上執行,而應用程式 B 只會在 2 上執行。

重要

不論函式是否正在執行,您都會針對在最小實例計數中配置的每個實例收費。

在大部分情況下,此自動計算的最小值就已足夠。 不過,請盡最大努力調整超出最小值。 雖然不太可能,但如果其他實例無法使用,在特定時間相應放大可能會延遲。 藉由設定高於自動計算最小值的最小值,您可以事先保留相應放大的實例。

您可以選取部署至該計劃之函式應用程式 設定 底下的 Scale Out 選項,以設定 Azure 入口網站 中的最小實例。

入口網站中的最小實例設定

可用的實例 SKU

建立或調整您的方案時,您可以從三種執行個體大小中選擇。 系統會針對每個實例配置給每個實例的每秒布建核心和記憶體總數計費。 您的應用程式可以視需要自動擴增至多個執行個體。

SKU 核心 記憶體 儲存體
EP1 1 3.5GB 250 GB
EP2 2 7GB 250 GB
EP3 4 14GB 250 GB

記憶體使用量考量

在記憶體較多的計算機上執行並不一定表示您的函式應用程式會使用所有可用的記憶體。

例如,JavaScript 函式應用程式受限於Node.js中的預設記憶體限制。 若要增加這個固定記憶體限制,請新增值為的應用程式設定languageWorkers:node:arguments--max-old-space-size=<max memory in MB>

對於記憶體超過 4 GB 的計劃,請確定 [一般] 設定 底下已將 [位] 平台設定設為 64 Bit

區域最大向外延展

以下是每個區域和 OS 組態中單一方案目前支援的最大向外延展值:

區域 Windows Linux
澳大利亞中部 100 20
澳大利亞中部 2 100 無法使用
澳大利亞東部 100 40
澳大利亞東南部 100 20
巴西南部 100 20
加拿大中部 100 100
印度中部 100 20
美國中部 100 100
中國東部 2 100 20
中國北部 2 100 20
東亞 100 20
美國東部 100 100
美國東部 2 100 100
法國中部 100 60
德國中西部 100 20
以色列中部 100 20
義大利北部 100 20
日本東部 100 20
日本西部 100 20
Jio 印度西部 100 20
南韓中部 100 20
南韓南部 40 20
美國中北部 100 20
北歐 100 100
挪威東部 100 20
南非北部 100 20
南非西部 20 20
美國中南部 100 100
印度南部 100 無法使用
東南亞 100 20
瑞士北部 100 20
瑞士西部 100 20
阿拉伯聯合大公國北部 100 20
英國南部 100 100
英國西部 100 20
US Gov 亞利桑那州 100 20
USGov Texas 100 無法使用
USGov Virginia 100 20
美國中西部 100 20
西歐 100 100
印度西部 100 20
美國西部 100 100
美國西部 2 100 20
美國西部 3 100 20

如需詳細資訊,請參閱 Azure Functions 的完整區域可用性。

下一步