Flex Consumption 是以 Linux 為基礎的 Azure Functions 主控方案,是依照使用量計費,按使用量付費的無伺服器計費模型。 它透過引入私有網路、實例記憶體大小選擇,以及快速或大規模擴展功能,同時仍採用 無伺服器 模式,提供更多彈性與自訂性。 Flex Consumption 是 Azure Functions 推薦的無伺服器主機方案。
您可以在 Flex Consumption 方案範例存放庫中,檢閱採用 Flex Consumption 方案的端對端範例。
Benefits
Flex Consumption 方案是以無伺服器消費方案的優點為基礎,這些優點包括動態擴展和按執行計費。 使用 Flex Consumption 還能獲得以下額外功能:
- 縮短冷啟動時間:啟用 隨時準備的實例 ,以達成比消耗方案更快的冷啟動時間。
- 虛擬網路支援: 虛擬網路整合 可讓您的無伺服器應用程式在虛擬網路中執行。
- TLS/SSL 憑證與端對端 TLS 加密:在自訂網域與憑證基礎應用場景中使用 站點範圍 憑證,並加密平台前端與執行你功能的工作者之間的流量。 欲了解更多資訊,請參閱 配置端對端 TLS 加密。
- 逐功能縮放:應用程式中的每個函式 會根據其工作負載獨立擴展,可能帶來更有效率的資源分配。
- 提升並發處理:透過每個函式可配置的並發設定,更好地處理並行執行。
- 彈性記憶體配置:Flex Consumption 提供多種 實例大小 選項,讓您能依照特定工作負載需求進行優化。
- Azure 檔案儲存體 儲存掛載: 將 Azure 檔案儲存體 分享直接掛載 到你的函式應用程式,讓你的程式碼能存取大型二進位檔、機器學習模型和共享資料,而不必將它們打包在部署中。
下表協助您直接比較 Flex Consumption 與 Consumption 主控方案的功能:
| Feature | 彈性使用量 | 使用量 |
|---|---|---|
| 調整至零 | ✅ 是 | ✅ 是 |
| 縮放行為 | 事件驅動 (快速) | 事件驅動 |
| 虛擬網路 | ✅ 支援 | ❌ 不支援 |
| 專用計算 (減輕冷啟動) | ✅ 隨時可用執行個體 (選用) | ❌ 無 |
| Billing | 執行時間 + 隨時可用執行個體 | 僅限執行時間 |
| 擴增執行個體 (上限) | 1,000 | 200 |
| Azure 檔案儲存體 儲存體掛接 | ✅ 支援 | ❌ 不支援 |
| Windows 支援 | ❌ 僅限 Linux | ✅ 是 |
如需彈性使用量方案與 Consumption 方案和所有其他方案與裝載類型的完整比較,請參閱函式調整和裝載選項。
小提示
如果您是從 Linux Consumption 計畫遷移,請參閱「將 Consumption 計畫應用程式遷移至 Flex Consumption 計畫」,其中包含逐步遷移說明及方案間的重要差異。
虛擬網路整合
彈性使用量在傳統使用量方案的優勢基礎上,進一步加入對虛擬網路整合的支援。 應用程式以 Flex Consumption 方案執行時,可以連線到虛擬網路內保護的其他 Azure 服務。 您仍可享有無伺服器計費和調整規模的優點,以及彈性使用量方案的規模和輸送量優勢。 欲了解更多資訊,請參閱 「配置虛擬網路整合」。
執行個體大小
在彈性使用量方案建立函數應用程式時,您可以選取應用程式執行使用的執行個體記憶體大小。 請參閱 計費,瞭解執行個體的記憶體大小如何影響您函式應用程式的成本。
目前,Flex Consumption 提供下列執行個體大小選項:
| 執行個體記憶體 (MB) | CPU 核心 |
|---|---|
| 512 | 0.25 |
| 2048 | 1 |
| 4096 | 2 個 |
備註
顯示的 CPU 核心值是具有指定記憶體大小的執行個體的一般配置。 不過,初始實例可能會有稍微不同的核心配置以提升效能。 每個 Flex Consumption 實例還包含平台額外分配的 272 MB 記憶體作為系統與主機程序的緩衝區。 這些額外記憶體不會影響帳單。 您需為前表所示的已設定執行個體記憶體大小付費。
在決定應用程式要使用哪種執行個體記憶體大小時,請考量下列因素:
- 大多數情境下預設使用 2,048 MB 的實例記憶體大小。 根據您應用程式的並行性或處理能力需求,請使用 512 MB 和 4,096 MB 的實例記憶體大小。 如需詳細資訊,請參閱設定執行個體記憶體。
- 您可以隨時變更執行個體的記憶體大小。 如需詳細資訊,請參閱設定執行個體記憶體。
- 你的函式程式碼和函式主機共享實例資源。
- 實例記憶體大小越大,每個實例能處理的同時執行或更高強度的 CPU 或記憶體工作負載就越多。 特定調整決策取決於工作負載。
- HTTP 觸發程序的預設並行取決於執行個體記憶體大小。 如需詳細資訊,請參閱 HTTP 觸發程序並行。
- 可用的 CPU 與網路頻寬與特定實例大小成正比。
根據個別函式調整
並行是決定彈性使用量函數應用程式調整的關鍵因素。 為了改善各種觸發程序類型的應用程式調整效能,彈性使用量方案提供更為決定性的方式,以個別函式為基礎調整您的應用程式。
這種 逐函式的縮放 行為是主機平台的一部分,所以你不需要設定應用程式或修改程式碼。 如需詳細資訊,請參閱事件驅動擴展一文中的 每個函數擴展 。
在逐功能擴展中,平台會根據群組聚合對特定功能觸發器做出決策。 下表顯示一組已定義的函式調整群組:
| 調整群組 | 群組中的觸發程序 | 設定值 |
|---|---|---|
| HTTP 觸發程序 |
HTTP 觸發程序 SignalR 觸發器 |
http |
| Blob 儲存體觸發程序 (以事件方格為基礎) |
Blob 儲存體觸發程序 | blob |
| Durable Functions |
協調觸發器 活動觸發程序 實體觸發器 |
durable |
平台會以各自的實例組合,逐一擴展應用程式中的所有其他功能。 平台透過慣例 function:<NAMED_FUNCTION>來參考這些實例。
永遠就緒的執行個體
彈性使用量包含一項永遠就緒功能,您可以用它選擇永遠執行的執行個體,並將其指派給每個個別函式調整規模群組或函式。 隨時可用是一個絕佳的選項,適用於您需要有最少數目的執行個體隨時可以處理要求的情況。 例如,它能降低應用程式的冷啟動延遲。 預設值是 0 (零)。
舉例來說,如果你把 HTTP 函式組的 always ready 設為 2,平台會一直讓兩個實例執行。 這些執行個體會優先處理您的函式執行。 根據並發設定,平台會透過按需實例擴展到這兩個實例之外。
在 啟用區域冗餘時,每個函式或函數群組最多可配置兩個隨時待命的實例。
隨時準備的實例與按需實例是分開的: 最大實例數 僅限制隨需實例,且不適用於隨時待命實例。
若要了解如何設定隨時可用的執行個體,請參閱設定隨時可用執行個體計數。
Concurrency
並行是指應用程式執行個體上同時執行的執行個體數目。 你可以設定每個實例在任何時刻最多同時處理的執行次數。 並發性直接影響你的應用程式的擴展性。 在較低的並行層級下,您需要更多執行個體,才能處理函式的事件驅動需求。 雖然你可以控制並微調並發,但平台提供的預設值在大多數情況下都適用。
若要了解如何設定 HTTP 觸發程序函式的並行限制,請參閱設定 HTTP 並行限制。 若要了解如何設定非 HTTP 觸發程序函式的並行限制,請參閱目標基礎調整。
規模化率
應用程式所需的實例數量會持續由每個實例的 並發 設定來評估與定義。
隨著活動需求增加,Flex Consumption 平台會自動擴展你的應用程式。 平台會不斷評估你的應用程式需要多少實例—— 也就是想要的實例數量——來自進入事件的數量和你的 每個實例並發 設定,後者控制每個實例同時處理的事件數量。 提高並發讓每個實例能做更多工作,因此你的應用程式需要的實例數量較少,以應付相同的負載。
兩個 獨立 的平台限制會影響你的應用程式如何達到目標數量,並且分開思考會比較有幫助:
- 擴展率決定新增實例的加入速度。
- 最大實例數決定了你的應用程式能存取多少實例。
你不需要設定擴展率——平台會幫你管理。 你確實可以設定 執行個體上限數量 和 每個執行個體的並行處理數。 了解這些有助於你設計出能平滑且可預測擴展的工作負載。
比例曲線的運作原理
平台不是一次新增所有請求的實例,而是以短時間、重複的爆發方式新增實例,並決定應用程式在每個短暫期間可新增多少實例。 每個區間的配額大小會遵循一條縮放曲線,取決於應用程式目前已在執行的執行個體數量:
- 當應用程式 只執行幾個實例時,允許值會達到最大,因此小型應用程式會迅速擴展,每分鐘可以增加許多實例。
- 隨著應用程式成長並執行 越來越多的實例,平台會更緩慢地分配每一批額外的實例。 這種減速能維持大規模擴展的穩定,並防止單一應用程式破壞其與其他應用程式共享的區域。
縮放曲線只適用於按需實例。 具體形狀和速率由平台管理,且可能隨時間改變,因此不要針對特定區間數值設計——設計時要針對 模式:一開始快速,然後在非常高的實例數時逐漸被測量。
隨時待命的實例 不受這種按需擴展率的限制。 如果你需要在可預期的流量高峰來臨前預先備妥容量,請設定永遠就緒的執行個體,使容量在負載到來前便已就緒。
最大實例數(上限)
不管速率如何,你的應用程式都不會超過 最大實例數。 當應用程式達到該上限時,平台會停止新增按需實例,無論需求剩多少,直到執行實例空出為止。 最大實例數限制為按需實例。 隨時待命的實例不計入此上限,因此你的應用程式除了可執行最大數量的隨選實例外,還可執行隨時待命的實例。
你可以在應用程式上設定最大實例數,但平台會將其套用到每個獨立擴展的功能群組,而非應用程式的合併實例。 函式群組是一組會在相同執行個體上一同擴展的函式,如依函式縮放所述。 許多應用程式會作為單一群組擴展,因此這個上限的作用就像每個應用程式各自有一個上限。 一個在自己實例上擴展某些函數的應用程式,會有多個函式組,且每個組的最大實例數都會適用。
高的最大實例數並不保證你的應用程式能達到: 區域訂閱記憶體配額 可能會限制該區域內所有應用程式的總擴展次數低於其設定最大值的總和。 如果你的應用程式需要擴展到大量實例數,請確認訂閱配額足夠高,必要時 再申請增加 。
節流回應
在任何時刻,平台都會授與所有這些限制中的最小允許量 — 包含擴展曲線、最大執行個體數和區域記憶體配額。 當其中一個限制暫時延遲擴展時,平台會短暫限制個別擴展請求。 限速擴展是高速擴展中暫時且預期的部分:平台會自動重試,而你的應用程式則持續隨著需求擴展。 偶爾踩油門不需要特別做任何動作。
設計以實現高速率下的平滑縮放
- 使用隨時就緒執行個體來預先佈建容量,以因應已知的高載並減少冷啟動,因為它們會略過隨需擴展速率。
- 適當調整 並行度,讓每個實例能處理更多工作,進而減少在特定負載下所需的實例數量。
- 設定一個足夠高的 最高實例數 ,並確認你的 訂閱記憶體配額 是否能支持這個目標。
掛接檔案共用
彈性使用量可讓您在函式應用程式中,將 Azure 檔案儲存體 共用掛接為本機目錄。 當您需要以下功能時,掛接會很有用:
- 避免將大型二進位檔案加進部署:載入像 ffmpeg 這類執行檔,而不是打包它們,這樣可以保持部署規模小且冷啟動速度。
- 跨實例共享參考資料:所有實例都能從同一共享中讀取機器學習模型、查找表或語料庫資料,無需每次請求下載。
- 應用程式間共享檔案:生產者應用程式會寫入,消費者應用程式則從同一個掛載讀取。
僅支援伺服器訊息區塊 (SMB) 共享,不支援 NFS。 掛載程序會使用儲存帳戶的存取金鑰進行驗證。 欲了解更多資訊,請參閱 選擇檔案存取策略。
想了解如何設定儲存掛載,請參閱 掛載檔案分享。
Deployment
Flex Consumption 計畫中的部署遵循單一路徑。 你不再需要應用程式設定來影響部署行為。 你要把專案程式碼壓縮到應用程式套件,然後部署到 blob 儲存容器。 啟動時,您的應用程式會取得該套件並執行該套件中的函式程式碼。 預設情況下,用於儲存內部主機元資料(AzureWebJobsStorage)的儲存帳號同時也作為部署容器。 不過,您可使用替代儲存體帳戶,或藉由設定應用程式的部署設定來選擇您慣用的驗證方法。
小提示
Azure 入口網站提供 彈性消費部署 診斷工具。 打開你的 Flex Consumption 應用程式,選擇 「診斷與解決問題」,並搜尋 Flex Consumption Deployment。 此工具會顯示部署的詳細資訊,包括部署歷史、套件狀態及故障排除建議。
零停機時間部署
備註
利用滾動更新實現零停機部署目前處於公開預覽階段。
Flex Consumption 透過滾動更新作為 網站更新策略,提供零停機部署。 此策略允許你在不同實例間逐步執行程式碼部署與設定變更,且不會中斷函式執行。 其他主機方案使用部署插槽來將部署期間的停機時間減少到最小。 如需所有裝載計劃的部署選項,請參閱最佳 化部署。
Billing
在 Flex Consumption 方案中執行應用程式時,決定成本有兩種模式。 每個模式都是以每個執行個體為基礎來決定。
| 計費模式 | Description |
|---|---|
| 點播 | 在 隨需 模式下執行時,您只需根據函數程式碼在可用執行個體上執行的時間量付費。 在隨選模式中,不需要最低執行個體計數。 計費項目如下: • 每個隨需執行個體主動執行函式時佈建的記憶體總數 (以 GB-秒為單位),減去每月免費授與的 GB-秒。 • 執行總數,減去每月執行的免費授與 (數目)。 |
| 隨時準備就緒 | 您可以設定一或多個執行個體,指派給特定觸發程序類型 (HTTP/Durable/Blob) 和個別函式,這些函式隨時可供處理要求。 啟用任何隨時可用執行個體時,計費項目如下: • 在所有隨時準備就緒的執行個體上佈建的記憶體總量,稱為 基準 (以 GB 秒為單位)。 • 每個隨時就緒的執行個體在 正在活躍地 執行函式期間所佈建的記憶體總量(以 GB 秒為單位)。 • 執行總數。 使用隨時可用計費時,沒有免費授權。 |
如需執行價格的最新資訊、隨時可用基準成本,以及隨需執行的免費授與,請參閱 Azure Functions 定價頁面。
這兩種執行模式的可計費執行期間下限為 1,000 毫秒。 之後,計費會向上取整到最接近的 100 毫秒。 您可以在 監視參考中找到彈性取用方案計費計量的詳細資料。
如需在彈性消費計劃中執行時如何計算成本的詳細資訊 (包括範例),請參閱以 消費為基礎的成本 和 檢視成本相關資料。
支援的語言堆疊版本
下表顯示 Flex Consumption 應用程式目前支援的語言堆疊版本:
| 語言堆疊 | 所需版本 |
|---|---|
| C#(孤立工作者模型)1 | .NET 8, .NET 9, .NET 10 |
| JAVA | Java 8、Java 11、Java 17、Java 21、Java 25 |
| Node.js | Node.js 22,Node.js 24 |
| PowerShell | PowerShell 7.6, PowerShell 7.4 |
| Python | Python 3.10、Python 3.11、Python 3.12、Python 3.13、Python 3.14 |
| 自訂處理程式 | 1.0 |
- C # 的進程中模型 不被支援。 你需要將 .NET 專案遷移到隔離工作者模式。
區域訂用帳戶記憶體配額
訂用帳戶和區域內的所有彈性使用量應用程式共用計算配額,就像共用的一個資源桶。 此配額僅適用於彈性消費應用程式。 其他主機方案(消費型、高級型和專用型)不算在這點上。 配額限制了 Flex Consumption 應用程式同時能使用的總運算量。 如果你的應用程式嘗試超過配額,部分執行和部署可能會延遲或失敗,且擴展性會被限制。 不過,你仍然可以創建新的應用程式。
預設配額
訂閱中每個區域預設配額為 250 核心 (相當於 512,000 MB),適用於所有 Flex Consumption 應用程式實例的總和。 你可以使用任意組合的實例大小和數量,只要核心總數低於配額即可。
計算所用核心數時,將每個實例的核心數乘以實例數:
| 執行個體大小 | 每個實例的核心數 | Formula |
|---|---|---|
| 512 MB | 0.25 | 實例× 0.25 |
| 2,048 MB | 1 | 實例× 1 |
| 4,096 MB | 2 個 | 實例× 2 |
配額範例
這些情境都會達到250個核心配額上限。 當配額達到時,該區域的應用程式會停止擴展:
| Scenario | 運算 | 核心總數 |
|---|---|---|
| 一個 512 MB 的應用程式,擁有 1,000 個實例 | 1,000 × 0.25 | 250 |
| 兩個 512 MB 的應用程式,分別在 250 和 750 個實例中 | (250 + 750) × 0.25 | 250 |
| 一個 2,048 MB 的應用程式,支援 250 個實例 | 250× 1 | 250 |
| 兩個 2,048 MB 的應用程式,分別在 100 和 150 個實例中 | (100 + 150) × 1 | 250 |
| 一個 4,096 MB 的應用程式,支援 125 個實例 | 125 × 2 | 250 |
| 一個 4,096 MB 的應用程式,擁有 100 個實例 + 一個 2,048 MB 的應用程式,擁有 50 個實例 | (100× 2) + (50 × 1) | 250 |
重要注意
- Flex Consumption 會根據並行設定快速擴展,因此,應用程式經常會隨著需求變化,從配額中增加或釋放核心。
- 調整為零的彈性使用量應用程式,或標示為要縮減並刪除的執行個體,不會計入配額。
- 「隨時待命」的執行個體會計入配額。
- Azure 入口網站提供 彈性消費配額工具。 開啟你訂閱內的任何 Flex Consumption 應用程式,選擇 「診斷與解決問題」,搜尋
Flex Consumption Quota,然後選擇區域。 該工具會顯示建議、當前配額資訊及歷史使用檢視。 - 您可以在等待容量審核的同時,將配額從 250 個核心增加到 1,000 個核心甚至更多。 若要申請更大配額,請建立客服單或聯絡你的 Microsoft 帳戶團隊。
已被取代的屬性和設定
在彈性消耗計畫中,許多標準的應用程式設定和站點設定屬性會被棄用或移動。 自動化功能應用程式資源建立時,不要使用這些設定。 如需詳細資訊,請參閱 彈性使用量方案淘汰。
Considerations
使用彈性消費計劃時請考慮以下事項:
- 每個方案的應用程式:每個彈性使用量方案只能有一個應用程式。
-
主機:應用程式初始化會在 30 秒後逾時。 當函數應用程式需要超過 30 秒的時間啟動時,您可能會看到已記錄 gRPC 相關的
System.TimeoutException項目。 目前無法設定此逾時值。 欲了解更多資訊,請參閱 此主機工作項目。 - Durable Functions:Azure 儲存體 與 Durable Task Scheduler 是 Flex Consumption 方案中唯一支援的 Durable Functions 儲存供應商 。 請參閱在彈性取用方案中裝載 Durable Functions 時的 建議 。
-
虛擬網路整合與資源提供者註冊:您必須在訂閱中註冊
Microsoft.AppAzure 資源提供者,才能整合到虛擬網路,這是子網路委派所必需的。 Azure 入口網站和 Azure CLI 會在應用程式建立時強制註冊,因為你可以在應用程式建立後的任何時候啟用虛擬網路整合。 要註冊此服務提供者, 請遵循以下指示。 彈性使用量應用程式所需的子網路委派為Microsoft.App/environments。 -
觸發程序:雖然彈性使用量方案完全支援所有觸發程序,但 Blob 儲存體觸發程序僅支援 Azure 事件方格來源 (部分內容可能是機器或 AI 翻譯)。 非 C# 函式應用程式必須使用
[4.0.0, 5.0.0)的版本,或更新版本。 - 區域:雖然 Flex Consumption 方案在許多 Azure 區域可用,但目前並不支援所有區域。 若要深入了解,請參閱檢視目前支援的區域。
- 部署:目前不支援部署位置。 關於使用 Flex Consumption 實現零停機部署,請參閱 Flex Consumption 中的網站更新策略。 若要從失敗的部署中復原,請參閱 從失敗的 Flex Consumption 方案部署中復原。
- 以 Azure 儲存體 作為本地共享:彈性使用量不支援網路檔案系統 (NFS) 檔案共享。 僅支援伺服器訊息區塊(SMB)和 Azure Blobs(唯讀)。 如需詳細資訊,請參閱掛接檔案共用。
-
比例:目前的最大比例下限是
1。 目前支援的最高值為1000。 - PowerShell 受管理相依性:Flex Consumption 在 PowerShell 中不支援受管理相依性。 您必須改為上傳具有應用程式內容的模組。
- 憑證:Flex Consumption 採用網站範圍驗證憑證,這種模式是憑證針對個別應用程式,而非跨網路空間共享。 支援管理憑證與應用程式服務憑證。 欲了解更多資訊,請參閱 「配置站點範圍憑證」。
-
時區:在彈性使用量方案上執行時,目前不支援
WEBSITE_TIME_ZONE和TZ應用程式設定。 - 遷移計畫:不支援將現有功能應用程式從其他主機計畫就地遷移到 Flex Consumption 計畫。 你也不能把應用程式從 Flex Consumption 轉移到其他方案。 要轉換到 Flex Consumption 模式,您必須在 Flex Consumption 計畫中建立一個新的函式應用程式,並重新部署程式碼。