Azure Functions 進階版方案

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

重要

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

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

  • 避免使用永久暖實例的冷啟動
  • 虛擬網路連線能力。
  • 無限制的執行持續時間,保證 60 分鐘。
  • 進階版實例大小:一個核心、兩個核心和四個核心實例。
  • 相較于取用方案,更可預測的定價。
  • 具有多個函式應用程式之方案的高密度應用程式佈建。

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

計費

進階版方案的計費是根據跨實例配置的核心秒數和記憶體。 此計費與取用方案不同,這是依執行和耗用的記憶體計費。 進階版計畫沒有執行費用。 每個方案至少必須配置一個實例。 不論函式是否為作用中或閒置,此計費都會產生每個作用中方案每月最低成本。 請記住,進階版方案中的所有函式應用程式都會共用配置的實例。 若要深入瞭解,請參閱Azure Functions定價頁面

建立進階方案

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

下列文章說明如何以程式設計方式或在Azure 入口網站中使用進階版方案建立函式應用程式:

消除冷啟動

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

進階版方案提供兩個功能,可一起運作,以有效地消除函式中的冷啟動:永遠就緒的實例預先準備的實例

永遠就緒的實例

在進階版方案中,您可以讓應用程式一律準備好在指定的實例數目上。 永遠就緒實例的最大數目為 20。 當事件開始觸發應用程式時,它們會先路由傳送至永遠就緒的實例。 當函式變成作用中時,其他實例會以緩衝區的形式暖。 此緩衝區可防止在調整期間所需的新實例冷啟動。 這些緩衝實例稱為 預先暖實例。 透過一律就緒實例和預先暖緩衝區的組合,您的應用程式可以有效地消除冷啟動。

注意

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

您可以選取 [函式應用程式]、移至 [平臺功能] 索引標籤,然後選取[Scale Out選項],在 [Azure 入口網站] 中設定永遠就緒的實例數目。 在函式應用程式編輯視窗中,一律是該應用程式特有的實例。

Elastic scale settings in the portal

預先暖的實例

預先暖實例是在調整和啟用事件期間以緩衝區的形式暖的實例。 預先暖的實例會繼續緩衝處理,直到達到最大相應放大限制為止。 預設預先暖實例計數為 1,而且在大部分情況下,此值應維持為 1。

當應用程式有長時間的準備 (,例如自訂容器映射) 時,您可能需要增加此緩衝區。 只有在所有作用中的實例都已足夠使用之後,預先準備的實例才會變成作用中。

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

請考慮這個範例,說明永遠就緒的實例和預先暖實例如何一起運作。 進階函式應用程式已設定五個永遠就緒的實例,以及一個預先準備實例的預設值。 當應用程式閒置且未觸發任何事件時,會布建並執行具有五個實例的應用程式。 此時,您不會支付預先暖實例的費用,因為不會使用永遠就緒的實例,也不會配置預先準備的實例。

一旦第一個觸發程式傳入,就會讓五個永遠就緒的實例變成作用中,並配置預先暖的實例。 應用程式現在正以六個布建的實例執行:五個現用的永遠就緒實例,以及第六個預先準備和非作用中的緩衝區。 如果執行率持續增加,最終會使用五個作用中的實例。 當平臺決定調整超過五個實例時,它會調整為預先暖的實例。 發生這種情況時,現在有六個作用中的實例,而第七個實例會立即布建並填滿預先準備的緩衝區。 這個調整和預先調整順序會繼續,直到達到應用程式的最大實例計數為止。 未預先準備或啟動超過最大值的實例。

您可以選取部署至該方案之函式應用程式設定底下的Scale Out選項,然後調整Always Ready Instances計數,以設定Azure 入口網站中預先準備的實例數目。

Pre-warmed instance Settings in the portal

函式應用程式實例數目上限

除了 方案實例計數上限之外,您還可以設定每個應用程式的最大數目。 您可以使用 應用程式縮放限制來設定應用程式上限。

私人網路連線能力

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

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

如需詳細資訊,請參閱 整合函式應用程式與 VNet

快速彈性調整

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

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

執行時間較長

單一執行Azure Functions限制為 10 分鐘。 在進階版計畫中,執行持續時間預設為 30 分鐘,以防止執行失控。 不過,您可以修改 host.json 組態,使進階版方案應用程式的持續時間未系結。 設定為未系結的持續時間時,您的函式應用程式保證至少執行 60 分鐘。

移轉

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

Linux 不支援此移轉。

規劃和 SKU 設定

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

如果您的應用程式需要實例超出永遠就緒的實例,它可以繼續相應放大,直到實例數目達到最大高載限制為止。 只有在計畫大小超過您的方案大小時,才會向您收取費用,而該實例會以每秒為基礎進行配置。 平臺會盡最大努力將您的應用程式相應放大至定義的上限。

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

Elastic plan size settings in the portal

每個方案的最小值至少是一個實例。 根據方案中應用程式所要求的永遠就緒實例,將為您自動設定實際的最小實例數目。 例如,如果應用程式 A 要求五個永遠就緒的實例,而應用程式 B 要求相同方案中的兩個一律就緒實例,則最小方案大小會計算為五個。 應用程式 A 將會在所有 5 上執行,而應用程式 B 只會在 2 上執行。

重要

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

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

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

Minimum instance settings in the portal

可用的實例 SKU

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

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

記憶體使用量考量

在具有更多記憶體的電腦上執行不一定表示您的函式應用程式使用所有可用的記憶體。

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

對於記憶體超過 4GB 的計畫,請確定 [一般設定] 底下的 [位平臺設定 64 Bit ]。

區域最大相應放大

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

請參閱 Azure 網站上的Functions 完整區域可用性。

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

後續步驟