Dela via


Beräkna förbrukningsbaserade kostnader

Den här artikeln visar hur du beräknar plankostnader för värdplaner för Flex-förbrukning och -förbrukning.

Azure Functions erbjuder för närvarande dessa olika värdalternativ för dina funktionsappar, där varje alternativ har en egen prissättningsmodell för värdplaner:

Plan beskrivning
Flex-förbrukningsplan Du betalar för körningstiden för de instanser där dina funktioner körs, plus alla alltid redo instanser. Instanser läggs till och tas bort dynamiskt baserat på antalet inkommande händelser. Detta är den rekommenderade planen för dynamisk skalning, som också stöder integrering av virtuella nätverk.
Premium Ger dig samma funktioner och skalningsmekanism som förbrukningsplanen, men med förbättrad prestanda och integrering av virtuella nätverk. Kostnaden baseras på din valda prisnivå. Mer information finns i Azure Functions Premium-plan.
Dedikerad (App Service)
(grundläggande nivå eller högre)
När du behöver köra på dedikerade virtuella datorer eller isolerat använder du anpassade avbildningar eller vill använda din överskjutande App Service-plankapacitet. Använder vanlig App Service-planfakturering. Kostnaden baseras på din valda prisnivå.
Container Apps Skapa och distribuera appar för containerbaserade funktioner i en fullständigt hanterad miljö som hanteras av Azure Container Apps, vilket gör att du kan köra dina funktioner tillsammans med andra mikrotjänster, API:er, webbplatser och arbetsflöden som värdbaserade program för containrar.
Förbrukning Du debiteras bara för den tid som funktionsappen körs. Den här planen innehåller ett kostnadsfritt bidrag per prenumeration.

Du bör alltid välja det alternativ som bäst stöder funktions-, prestanda- och kostnadskraven för dina funktionskörningar. Mer information finns i Skala och hantera Azure Functions.

Den här artikeln fokuserar på flexförbruknings- och förbrukningsplaner eftersom faktureringen i dessa planer beror på aktiva körningsperioder i varje instans.

Durable Functions kan också köras i båda dessa planer. Mer information om kostnadsöverväganden när du använder Durable Functions finns i Durable Functions-fakturering.

Förbrukningsbaserade kostnader

Hur förbrukningsbaserade kostnader beräknas, inklusive kostnadsfria bidrag, beror på den specifika planen. Information om den senaste kostnaden och beviljandet finns på sidan med priser för Azure Functions.

Det finns två lägen där dina kostnader bestäms när du kör dina appar i Flex Consumption-planen. Varje läge bestäms per instans.

Faktureringsläge beskrivning
På begäran När du kör i läget på begäran debiteras du endast under den tid som funktionskoden körs på dina tillgängliga instanser. I läget på begäran krävs inget minsta antal instanser. Du debiteras för:

• Den totala mängden minne som etablerats medan varje instans på begäran aktivt kör funktioner (i GB-sekunder), minus ett kostnadsfritt beviljande av GB per månad.
• Det totala antalet körningar, minus ett kostnadsfritt bidrag (antal) körningar per månad.
Alltid redo Du kan konfigurera en eller flera instanser, tilldelade till specifika utlösartyper (HTTP/Durable/Blob) och enskilda funktioner, som alltid är tillgängliga för att hantera begäranden. När du har aktiverat alla alltid redo instanser debiteras du för:

• Den totala mängden minne som har etablerats för alla dina alltid klara instanser, så kallad baslinje (i GB-sekunder).
• Den totala mängden minne som har etablerats under den tid då varje alltid redo instans aktivt kör funktioner (i GB-sekunder).
• Det totala antalet körningar.

I alltid redo fakturering finns det inga kostnadsfria bidrag.

Den senaste informationen om körningspriser, alltid redo baslinjekostnader och kostnadsfria bidrag för körningar på begäran finns på prissättningssidan för Azure Functions.

Det här diagrammet visar hur kostnader på begäran fastställs i den här planen:

Diagram över kostnader för Flex Consumption plan on-demand baserat på både belastning (instansantal) och tid.

Förutom körningstiden debiteras du även med en lägre baslinjefrekvens för antalet alltid redo instanser som du underhåller när du använder en eller flera alltid redo instanser. Körningstiden för alltid redo instanser kan vara billigare än körningstid på instanser med körning på begäran.

Viktigt!

I den här artikeln används priser på begäran för att förstå exempelberäkningar. Kontrollera alltid de aktuella kostnaderna på prissättningssidan för Azure Functions när du beräknar kostnader som du kan medföra när du kör dina funktioner i Flex Consumption-planen.

Överväg en funktionsapp som endast består av HTTP-utlösare med och dessa grundläggande fakta:

  • HTTP-utlösare hanterar 40 konstanta begäranden per sekund.
  • HTTP-utlösare hanterar 10 samtidiga begäranden.
  • Inställningen för minnesstorlek för instansen är 2048 MB.
  • Det finns inga alltid redo instanser konfigurerade, vilket innebär att appen kan skalas till noll.

I en situation som denna beror prissättningen mer på vilken typ av arbete som utförs under kodkörningen. Nu ska vi titta på två arbetsbelastningsscenarier:

  • CPU-bunden arbetsbelastning: I en CPU-bunden arbetsbelastning finns det ingen fördel med att bearbeta flera begäranden parallellt i samma instans. Det innebär att du är bättre på att distribuera varje begäran till sin egen instans så att begäranden slutförs så snabbt som möjligt utan konkurrens. I det här scenariot bör du ange en låg HTTP-utlösarkonkurritet för 1. Med 10 samtidiga begäranden skalas appen till ett stabilt tillstånd på ungefär 10 instanser, och varje instans bearbetar kontinuerligt en begäran i taget.

    Eftersom storleken på varje instans är ~2 GB är 2 GB * 3600 s = 7200 GB-sförbrukningen för en enda kontinuerligt aktiv instans , som enligt den antagna körningstakten på begäran (utan några kostnadsfria bidrag tillämpas $0.1152 USD ) per timme per instans. Eftersom den CPU-bundna appen skalas till 10 instanser är $1.152 USDden totala timtaxa för körningstiden .

    På samma sätt är kostnaden per körning på begäran (utan kostnadsfria bidrag) på 40 begäranden per sekund lika 40 * 3600 = 144,000 med eller 0,144 miljoner körningar per timme. Den totala (kostnadsfria) timkostnaden för körningar är sedan 0.144 * $0.20, vilket är $0.0288 per timme.

    I det här scenariot är $1.152 + $0.0288 = $1.1808 USDden totala timkostnaden för att köra på begäran på 10 instanser .

  • I/O-bunden arbetsbelastning: I en I/O-bunden arbetsbelastning ägnas större delen av programtiden åt att vänta på inkommande begäran, vilket kan begränsas av nätverkets dataflöde eller andra överordnade faktorer. På grund av de begränsade indata kan koden bearbeta flera åtgärder samtidigt utan negativa effekter. I det här scenariot antar du att du kan bearbeta alla tio samtidiga begäranden på samma instans.

    Eftersom förbrukningsavgifter endast baseras på minnet för varje aktiv instans är beräkningen av förbrukningsavgiften helt enkelt 2 GB * 3600 s = 7200 GB-s, som enligt den antagna körningstakten på begäran (utan några kostnadsfria bidrag tillämpas) per $0.1152 USD timme för den enskilda instansen.

    Precis som i det CPU-bundna scenariot är kostnaden per körning på begäran (utan kostnadsfria bidrag) på 40 begäranden per sekund lika 40 * 3600 = 144,000 med eller 0,144 miljoner körningar per timme. I det här fallet den totala (kostnadsfria) timkostnaden för körningar 0.144 * $0.20, vilket är $0.0288 per timme.

    I det här scenariot är $0.1152 + $0.0288 = $0.144 USDden totala timkostnaden för att köra på begäran på en enda instans .

När du beräknar den totala kostnaden för att köra dina funktioner i en plan bör du komma ihåg att Functions-körningen använder flera andra Azure-tjänster, som var och en faktureras separat. När du beräknar prissättningen för funktionsappar kräver alla utlösare och bindningar som du har som integreras med andra Azure-tjänster att du skapar och betalar för dessa andra tjänster.

För funktioner som körs i en förbrukningsplan är den totala kostnaden körningskostnaden för dina funktioner, plus kostnaden för bandbredd och andra tjänster.

När du beräknar de totala kostnaderna för din funktionsapp och relaterade tjänster använder du Priskalkylatorn för Azure.

Relaterad kostnad beskrivning
Lagringskonto Varje funktionsapp kräver att du har en associerad Generell användning Azure Storage-konto, som faktureras separat. Det här kontot används internt av Functions-körningen, men du kan också använda det för Storage-utlösare och bindningar. Om du inte har något lagringskonto skapas ett åt dig när funktionsappen skapas. Mer information finns i Krav för lagringskonto.
Application Insights Functions förlitar sig på Application Insights för att tillhandahålla en övervakningsupplevelse med höga prestanda för dina funktionsappar. Även om det inte krävs bör du aktivera Application Insights-integrering. Ett kostnadsfritt beviljande av telemetridata ingår varje månad. Mer information finns på prissättningssidan för Azure Monitor.
Nätverksbandbredd Du kan medföra kostnader för dataöverföring beroende på riktningen och scenariot för dataflytten. Mer information finns i Prisinformation om bandbredd.

Beteenden som påverkar körningstiden

Följande funktioners beteende kan påverka körningstiden:

  • Utlösare och bindningar: Den tid det tar att läsa indata från och skriva utdata till dina funktionsbindningar räknas som körningstid. När din funktion till exempel använder en utdatabindning för att skriva ett meddelande till en Azure-lagringskö inkluderar körningstiden den tid det tar att skriva meddelandet till kön, vilket ingår i beräkningen av funktionskostnaden.

  • Asynkron körning: Den tid som funktionen väntar på resultatet av en asynkron begäran (await i C#) räknas som körningstid. GB-sekundersberäkningen baseras på start- och sluttiden för funktionen och minnesanvändningen under den perioden. Vad som händer under den tiden när det gäller CPU-aktivitet räknas inte in i beräkningen. Du kanske kan minska kostnaderna under asynkrona åtgärder med hjälp av Durable Functions. Du debiteras inte för tid som ägnas åt väntan i orkestreringsfunktioner.

fakturan kan du visa kostnadsrelaterade data för Totalt antal körningar – Funktioner och körningstid – Funktioner, tillsammans med de faktiska fakturerade kostnaderna. Dessa fakturadata är dock en månatlig aggregering för en tidigare fakturaperiod.

Funktionsmått på appnivå

För att bättre förstå kostnaderna för dina funktioner kan du använda Azure Monitor för att visa kostnadsrelaterade mått som för närvarande genereras av dina funktionsappar.

Använd Azure Monitor Metrics Explorer för att visa kostnadsrelaterade data för dina funktionsappar för förbrukningsplan i ett grafiskt format.

  1. Gå till funktionsappen i Azure Portal.

  2. I den vänstra panelen rullar du ned till Övervakning och väljer Mått.

  3. Från Mått väljer du Antal funktionskörningar och Summa för sammansättning. Detta lägger till summan av körningsantalet under den valda perioden i diagrammet.

    Definiera ett funktionsappmått som ska läggas till i diagrammet

  4. Välj Lägg till mått och upprepa steg 2–4 för att lägga till funktionskörningsenheter i diagrammet.

Det resulterande diagrammet innehåller summorna för båda körningsmåtten i det valda tidsintervallet, vilket i det här fallet är två timmar.

Diagram över antal funktionskörningar och körningsenheter

Eftersom antalet körningsenheter är så mycket större än körningsantalet visar diagrammet bara körningsenheter.

Det här diagrammet visar totalt 1,11 miljarder Function Execution Units förbrukade under en tvåtimmarsperiod, mätt i MB-millisekunder. Om du vill konvertera till GB-sekunder dividerar du med 1024000. I det här exemplet förbrukade funktionsappen 1110000000 / 1024000 = 1083.98 GB-sekunder. Du kan ta det här värdet och multiplicera med det aktuella priset för körningstiden på sidan Functions-priser, vilket ger dig kostnaden för dessa två timmar, förutsatt att du redan har använt några kostnadsfria beviljanden av körningstid.

Mått på funktionsnivå

Funktionskörningsenheter är en kombination av körningstid och minnesanvändning, vilket gör det till ett svårt mått för att förstå minnesanvändning. Minnesdata är för närvarande inte ett mått som är tillgängligt via Azure Monitor. Men om du vill optimera minnesanvändningen för din app kan du använda prestandaräknardata som samlas in av Application Insights.

Om du inte redan har gjort det aktiverar du Application Insights i funktionsappen. Med den här integreringen aktiverad kan du köra frågor mot dessa telemetridata i portalen.

Du kan använda azure monitor-måttutforskaren i Azure Portal- eller REST-API:er för att hämta data för övervakningsmått.

Fastställa minnesanvändning

Under Övervakning väljer du Loggar (Analys), kopierar sedan följande telemetrifråga och klistrar in den i frågefönstret och väljer Kör. Den här frågan returnerar den totala minnesanvändningen vid varje sampeltillfälle.

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

Resultatet ser ut som i följande exempel:

tidsstämpel [UTC] name värde
2019-09-12, 01:05:14.947 Privata byte 209,932,288
2019-09-12, 01:06:14.994 Privata byte 212,189,184
2019-09-12, 01:06:30.010 Privata byte 231,714,816
2019-09-12, 01:07:15.040 Privata byte 210,591,744
2019-09-12, 01:12:16.285 Privata byte 216,285,184
2019-09-12, 01:12:31.376 Privata byte 235,806,720

Fastställa varaktighet

Azure Monitor spårar mått på resursnivå, vilket för Functions är funktionsappen. Application Insights-integrering genererar mått per funktion. Här är ett exempel på en analysfråga för att få den genomsnittliga varaktigheten för en funktion:

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

Nästa steg