Sdílet prostřednictvím


Odhad nákladů na základě spotřeby

V tomto článku se dozvíte, jak odhadnout náklady na plán pro plány flex consumption a hostování Consumption.

Azure Functions v současné době nabízí tyto různé možnosti hostování pro vaše aplikace funkcí, přičemž každá možnost má svůj vlastní cenový model plánu hostování:

Plán Popis
Plán Flex Consumption Platíte za dobu provádění instancí, na kterých jsou vaše funkce spuštěné, a za všechny instance, které jsou vždy připravené . Instance se dynamicky přidávají a odebírají na základě počtu příchozích událostí. Toto je doporučený plán dynamického škálování, který také podporuje integraci virtuální sítě.
Premium Poskytuje stejné funkce a mechanismus škálování jako plán Consumption, ale s lepším výkonem a integrací virtuální sítě. Náklady jsou založené na zvolené cenové úrovni. Další informace najdete v plánu Azure Functions Premium.
Dedicated (App Service)
(úroveň Basic nebo vyšší)
Pokud potřebujete běžet na vyhrazených virtuálních počítačích nebo v izolaci, použijte vlastní image nebo chcete využít nadbytečnou kapacitu plánu služby App Service. Používá běžnou fakturaci plánu služby App Service. Náklady jsou založené na zvolené cenové úrovni.
Container Apps Vytvářejte a nasazujte kontejnerizované aplikace funkcí v plně spravovaném prostředí hostované službou Azure Container Apps, které umožňuje spouštět funkce společně s dalšími mikroslužbami, rozhraními API, weby a pracovními postupy jako programy hostované kontejnery.
Využití Účtuje se vám jenom doba, po kterou běží vaše aplikace funkcí. Tento plán zahrnuje bezplatné granty na základě předplatného.

Vždy byste měli zvolit možnost, která nejlépe podporuje funkce, výkon a požadavky na náklady na provádění funkcí. Další informace najdete v tématu Škálování a hostování azure Functions.

Tento článek se zaměřuje na plány Flex Consumption a Consumption, protože v těchto plánech fakturace závisí na aktivních obdobích provádění v jednotlivých instancích.

Durable Functions může také běžet v obou těchto plánech. Další informace o aspektech nákladů při používání Durable Functions najdete v tématu Fakturace Durable Functions.

Náklady na základě spotřeby

Způsob výpočtu nákladů založených na spotřebě, včetně bezplatných grantů, závisí na konkrétním plánu. Informace o nejaktuálnějších nákladech a udělení najdete na stránce s cenami služby Azure Functions.

Při spouštění aplikací v plánu Flex Consumption se určují dva režimy, podle kterých se náklady určují. Každý režim je určen pro jednotlivé instance.

Režim fakturace Popis
Na požádání Při spuštění v režimu na vyžádání se vám účtuje jenom doba, po kterou kód funkce běží na dostupných instancích. V režimu na vyžádání se nevyžaduje žádný minimální počet instancí. Účtuje se vám:

• Celková velikost paměti zřízená, zatímco každá instance na vyžádání aktivně spouští funkce (v GB sekundách), minus bezplatný grant GB za měsíc.
• Celkový počet spuštění minus bezplatný grant (počet) spuštění za měsíc.
Vždy připraveno Můžete nakonfigurovat jednu nebo více instancí přiřazených ke konkrétním typům triggerů (HTTP/Durable/Blob) a jednotlivým funkcím, které jsou vždy k dispozici pro zpracování požadavků. Pokud máte povolené všechny vždy připravené instance, účtují se vám poplatky za:

• Celková velikost paměti zřízená ve všech instancích, které jsou vždy připravené, označované jako standardní hodnoty (v GB sekundách).
• Celková velikost paměti zřízená během doby, kdy každá vždy připravená instance aktivně spouští funkce (v GB sekundách).
• Celkový počet spuštění.

Ve vždy připravené fakturaci neexistují žádné bezplatné granty.

Nejaktuálnější informace o cenách spouštění, vždy připravených standardních nákladů a bezplatných grantů na provádění na vyžádání najdete na stránce s cenami služby Azure Functions.

Tento diagram znázorňuje způsob určení nákladů na vyžádání v tomto plánu:

Graf nákladů na plán Flex Consumption na vyžádání na základě zatížení (počtu instancí) i času

Kromě doby provádění se vám při použití jedné nebo více vždy připravených instancí účtuje také nižší směrná sazba za počet vždy připravených instancí, které udržujete. Doba provádění pro vždy připravené instance může být levnější než doba provádění u instancí s prováděním na vyžádání.

Důležité

V tomto článku se ceny na vyžádání používají k pochopení ukázkových výpočtů. Vždy zkontrolujte aktuální náklady na stránce s cenami služby Azure Functions při odhadu nákladů, ke které může dojít při spouštění funkcí v plánu Flex Consumption.

Představte si aplikaci funkcí, která se skládá jenom z triggerů HTTP, s těmito základními fakty:

  • Triggery HTTP zpracovávají 40 konstantních požadavků za sekundu.
  • Triggery HTTP zpracovávají 10 souběžných požadavků.
  • Nastavení velikosti paměti instance je 2048 MB.
  • Nejsou nakonfigurované žádné vždy připravené instance, což znamená, že aplikace může škálovat na nulu.

V takové situaci závisí cena více na druhu práce prováděné během provádění kódu. Pojďme se podívat na dva scénáře úloh:

  • Úloha vázaná na procesor: V úloze vázané na procesor neexistuje žádná výhoda pro paralelní zpracování více požadavků ve stejné instanci. To znamená, že lépe distribuujete jednotlivé požadavky do své vlastní instance, aby se požadavky co nejrychleji dokončily bez kolize. V tomto scénáři byste měli nastavit nízkou souběžnost triggeru 1HTTP . Při 10 souběžných požadavcích se aplikace škáluje na stabilní stav zhruba 10 instancí a každá instance neustále zpracovává jeden požadavek najednou.

    Vzhledem k tomu, že velikost každé instance je ~2 GB, spotřeba jedné nepřetržitě aktivní instance je 2 GB * 3600 s = 7200 GB-s, což je předpokládaná míra provádění na vyžádání (bez použití bezplatných grantů) $0.1152 USD za hodinu na instanci. Vzhledem k tomu, že se aplikace vázané na procesor škáluje na 10 instancí, celková hodinová rychlost pro dobu provádění je $1.152 USD.

    Podobně se poplatek za provedení na vyžádání (bez bezplatných grantů) 40 žádostí za sekundu rovná 40 * 3600 = 144,000 0,144 milionům spuštění za hodinu. Celkové (grantové) hodinové náklady na provádění jsou pak 0.144 * $0.20, což je $0.0288 za hodinu.

    V tomto scénáři jsou $1.152 + $0.0288 = $1.1808 USDcelkové hodinové náklady na provoz na vyžádání na 10 instancí .

  • Vstupně-výstupní úloha: Ve vstupně-výstupních úlohách se většina času aplikace stráví čekáním na příchozí požadavek, což může být omezené propustností sítě nebo jinými nadřazenými faktory. Z důvodu omezených vstupů může kód zpracovávat více operací současně bez negativních dopadů. V tomto scénáři předpokládejme, že můžete zpracovat všech 10 souběžných požadavků ve stejné instanci.

    Vzhledem k tomu, že poplatky za spotřebu jsou založeny pouze na paměti každé aktivní instance, výpočet poplatku za spotřebu je jednoduše 2 GB * 3600 s = 7200 GB-s, což se předpokládá, že míra provádění na vyžádání (bez použití bezplatných grantů) je $0.1152 USD pro jednu instanci každou hodinu.

    Stejně jako ve scénáři vázaném na procesor se 40 * 3600 = 144,000 poplatky za spuštění na vyžádání (bez bezplatných grantů) 40 požadavků za sekundu rovnají 0,144 milionům spuštění za hodinu. V tomto případě jsou celkové (grant-free) hodinové náklady na provádění 0.144 * $0.20, což je $0.0288 za hodinu.

    V tomto scénáři jsou $0.1152 + $0.0288 = $0.144 USDcelkové hodinové náklady na provoz na vyžádání na jedné instanci .

Při odhadu celkových nákladů na provoz funkcí v jakémkoli plánu mějte na paměti, že modul runtime Functions používá několik dalších služeb Azure, které se účtují samostatně. Když odhadnete ceny pro aplikace funkcí, všechny triggery a vazby, které máte integrované s jinými službami Azure, vyžadují, abyste tyto další služby vytvořili a zaplatili za ně.

U funkcí běžících v plánu Consumption jsou celkové náklady na provádění vašich funkcí plus náklady na šířku pásma a další služby.

Při odhadu celkových nákladů na vaši aplikaci funkcí a souvisejících služeb použijte cenovou kalkulačku Azure.

Související náklady Popis
Účet úložiště Každá aplikace funkcí vyžaduje, abyste měli přidružený účet Azure Storage pro obecné účely, který se účtuje samostatně. Tento účet používá modul runtime Služby Functions interně, ale můžete ho také použít pro triggery a vazby úložiště. Pokud účet úložiště nemáte, vytvoří se pro vás při vytvoření aplikace funkcí. Další informace najdete v tématu Požadavky na účet úložiště.
Application Insights Funkce spoléhají na Application Insights , aby poskytovaly vysoce výkonné prostředí pro monitorování vašich aplikací funkcí. I když to není nutné, měli byste povolit integraci Application Insights. Každý měsíc se zahrne bezplatné udělení telemetrických dat. Další informace najdete na stránce s cenami služby Azure Monitor.
Šířka pásma sítě Náklady na přenos dat můžete mít v závislosti na směru a scénáři přesunu dat. Další informace najdete v tématu Podrobnosti o cenách šířky pásma.

Chování ovlivňující dobu provádění

Doba provádění může ovlivnit následující chování vašich funkcí:

  • Triggery a vazby: Doba potřebná ke čtení vstupu a zápisu do vazeb funkcí se počítá jako doba provádění. Pokud například vaše funkce používá výstupní vazbu k zápisu zprávy do fronty úložiště Azure, doba provádění zahrnuje čas potřebný k zápisu zprávy do fronty, která je součástí výpočtu nákladů na funkci.

  • Asynchronní spuštění: Doba, po kterou vaše funkce čeká na výsledky asynchronního požadavku (await v jazyce C#), se počítá jako doba provádění. Výpočet GB-sekund je založen na počátečním a koncovém čase funkce a využití paměti v daném období. Co se v daném čase děje z hlediska aktivity procesoru, se do výpočtu nezapočítá. Můžete být schopni snížit náklady během asynchronních operací pomocí Durable Functions. Neúčtují se vám časy strávené na operátorech čekajících ve funkcích orchestrátoru.

Na faktuře můžete zobrazit data související s náklady celkových spuštění – Funkce a doba provádění – Functions spolu se skutečnými fakturovanými náklady. Tato data faktury jsou však měsíční agregací za období poslední faktury.

Metriky na úrovni aplikace funkcí

Pokud chcete lépe porozumět nákladům na vaše funkce, můžete pomocí služby Azure Monitor zobrazit metriky související s náklady, které aktuálně generují vaše aplikace funkcí.

Pomocí Průzkumníka metrik Služby Azure Monitor můžete zobrazit data související s náklady pro aplikace funkcí plánu Consumption v grafickém formátu.

  1. Na webu Azure Portal přejděte do aplikace funkcí.

  2. Na levém panelu se posuňte dolů na Monitorování a zvolte Metriky.

  3. V metrikě zvolte Počet spuštění funkce a součet pro agregaci. Tím se do grafu přičte součet počtů spuštění během vybraného období.

    Definování metriky aplikace funkcí pro přidání do grafu

  4. Vyberte Přidat metriku a opakujte kroky 2 až 4 a přidejte do grafu jednotky provádění funkcí.

Výsledný graf obsahuje součty pro obě metriky spuštění ve zvoleném časovém rozsahu, což je v tomto případě dvě hodiny.

Graf počtů provádění funkcí a jednotek provádění

Vzhledem k tomu, že počet jednotek provádění je mnohem větší než počet spuštění, graf zobrazuje pouze jednotky provádění.

Tento graf zobrazuje celkem 1,11 miliardy Function Execution Units spotřebovaných v dvouhodinovém období měřeném v MB-milisekundách. Pokud chcete převést na GB sekund, vydělte 1024000. V tomto příkladu aplikace funkcí spotřebovala 1110000000 / 1024000 = 1083.98 GB sekund. Tuto hodnotu můžete vzít a vynásobit aktuální cenou doby provádění na stránce s cenami služby Functions, která poskytuje náklady na tyto dvě hodiny za předpokladu, že jste už využili jakékoli bezplatné granty doby provádění.

Metriky na úrovni funkce

Jednotky spouštění funkcí jsou kombinací doby provádění a využití paměti, což ztěžuje pochopení využití paměti. Data paměti nejsou aktuálně k dispozici prostřednictvím služby Azure Monitor. Pokud ale chcete optimalizovat využití paměti aplikace, můžete použít data čítače výkonu shromážděná službou Application Insights.

Pokud jste to ještě neudělali, povolte application Insights v aplikaci funkcí. Pokud je tato integrace povolená, můžete se na tato telemetrická data dotazovat na portálu.

K získání dat metrik monitorování můžete použít Průzkumník metrik Azure Monitoru na webu Azure Portal nebo rozhraní REST API.

Určení využití paměti

V části Monitorování vyberte Protokoly (Analytics) a zkopírujte následující telemetrický dotaz a vložte ho do okna dotazu a vyberte Spustit. Tento dotaz vrátí celkové využití paměti v každém vzorkovaném čase.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

Výsledky vypadají jako v následujícím příkladu:

časové razítko [UTC] name hodnota
9.12.2019, 1:05:14.947 Privátní bajty 209,932,288
12.9.2019, 1:06:14.994 Privátní bajty 212,189,184
12.9.2019, 1:06:30.010 Privátní bajty 231,714,816
12.9.2019, 1:07:15.040 Privátní bajty 210,591,744
12.9.2019, 1:12:16.285 Privátní bajty 216,285,184
12.9.2019, 1:12:31.376 Privátní bajty 235,806,720

Určení doby trvání

Azure Monitor sleduje metriky na úrovni prostředků, což je aplikace funkcí pro Functions. Integrace Application Insights generuje metriky na základě jednotlivých funkcí. Tady je příklad analytického dotazu pro získání průměrné doby trvání funkce:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
name averageDurationMilliseconds
QueueTrigger AvgDurationMs 16.087
QueueTrigger MaxDurationMs 90.249
QueueTrigger MinDurationMs 8.522

Další kroky