Dela via


Beräkna förbrukningsbaserade kostnader

Den här artikeln visar hur du beräknar plankostnader för värdplanerna Förbrukning och Flex Consumption.

Azure Functions erbjuder för närvarande fyra olika värdplaner för dina funktionsappar, där varje plan har en egen prismodell:

Plan beskrivning
Förbrukning Du debiteras bara för den tid som funktionsappen körs. Den här planen innehåller ett kostnadsfritt bidrag per prenumeration.
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. Stöder även 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å.

Viktigt!

Flex Consumption-planen är för närvarande i förhandsversion.

Du bör alltid välja den plan 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å förbruknings- och flexfö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.

Körningskostnaden för en enskild funktionskörning mäts i GB-sekunder. Körningskostnaden beräknas genom att kombinera minnesanvändningen med körningstiden. En funktion som körs för längre kostnader mer, liksom en funktion som förbrukar mer minne.

Tänk dig ett fall där mängden minne som används av funktionen förblir konstant. I det här fallet är beräkningen av kostnaden enkel multiplikation. Anta till exempel att funktionen förbrukade 0,5 GB i 3 sekunder. Därefter är 0.5GB * 3s = 1.5 GB-secondskörningskostnaden .

Eftersom minnesanvändningen ändras över tid är beräkningen i stort sett en integrerad del av minnesanvändningen över tid. Systemet utför den här beräkningen genom att sampling av processens minnesanvändning (tillsammans med underordnade processer) med jämna mellanrum. Som nämnts på prissidan avrundas minnesanvändningen upp till närmaste bucket på 128 MB. När processen använder 160 MB debiteras du för 256 MB. Beräkningen tar hänsyn till samtidighet, vilket är flera samtidiga funktionskörningar i samma process.

Kommentar

Processoranvändningen beaktas inte direkt i körningskostnaden, men den kan påverka kostnaden när den påverkar körningstiden för funktionen.

För en HTTP-utlöst funktion debiteras du inte för en körning när ett fel inträffar innan funktionskoden börjar köras. Det innebär att 401-svar från plattformen på grund av API-nyckelverifiering eller App Service-autentisering/auktoriseringsfunktionen inte räknas mot din körningskostnad. På samma sätt räknas inte 5xx-statuskodsvar när de inträffar på plattformen innan funktionen bearbetar begäran. Ett 5xx-svar som genereras av plattformen när funktionskoden har börjat köras räknas fortfarande som en körning, även om felet inte genereras från funktionskoden.

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 ett associerat Azure Storage-konto för generell användning som debiteras 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å kostnadspåverkan 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-portalen.

  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-portalen 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