Delen via


Kosten op basis van verbruik schatten

In dit artikel leest u hoe u de plankosten voor de hostingabonnementen Flex Consumption en Consumption kunt schatten.

Azure Functions biedt momenteel deze verschillende hostingopties voor uw functie-apps, waarbij elke optie een eigen prijsmodel voor hostingabonnementen heeft:

Abonnement Beschrijving
Flex Consumption-abonnement U betaalt voor uitvoeringstijd voor de exemplaren waarop uw functies worden uitgevoerd, plus eventuele altijd gereede exemplaren. Exemplaren worden dynamisch toegevoegd en verwijderd op basis van het aantal binnenkomende gebeurtenissen. Dit is het aanbevolen dynamische schaalplan, dat ook ondersteuning biedt voor integratie van virtuele netwerken.
Premium Biedt dezelfde functies en schaalmechanismen als het verbruiksabonnement, maar met verbeterde prestaties en integratie van virtuele netwerken. De kosten zijn gebaseerd op uw gekozen prijscategorie. Zie het Azure Functions Premium-abonnement voor meer informatie.
Toegewezen (App Service)
(Basic-laag of hoger)
Wanneer u op toegewezen VM's of in isolatie moet worden uitgevoerd, kunt u aangepaste installatiekopieën gebruiken of uw overtollige Capaciteit van het App Service-plan willen gebruiken. Maakt gebruik van reguliere facturering voor Een App Service-abonnement. De kosten zijn gebaseerd op uw gekozen prijscategorie.
Container Apps Maak en implementeer functie-apps in een volledig beheerde omgeving die wordt gehost door Azure Container Apps, waarmee u uw functies kunt uitvoeren naast andere microservices, API's, websites en werkstromen als door containers gehoste programma's.
Verbruik Er worden alleen kosten in rekening gebracht voor de tijd dat uw functie-app wordt uitgevoerd. Dit abonnement omvat een gratis toekenning per abonnement.

U moet altijd de optie kiezen die het beste ondersteuning biedt voor de functie-, prestatie- en kostenvereisten voor uw functie-uitvoeringen. Zie Azure Functions schalen en hosten voor meer informatie.

Dit artikel is gericht op flexverbruiks- en verbruiksabonnementen, omdat in deze abonnementen facturering afhankelijk is van actieve perioden van uitvoeringen binnen elke instantie.

Durable Functions kan ook worden uitgevoerd in beide abonnementen. Zie Facturering van Durable Functions voor meer informatie over de kostenoverwegingen bij het gebruik van Durable Functions.

Kosten op basis van verbruik

De manier waarop de kosten op basis van verbruik worden berekend, inclusief gratis subsidies, is afhankelijk van het specifieke abonnement. Zie de pagina met prijzen van Azure Functions voor de meest recente kosten en het verlenen van informatie.

Er zijn twee modi waarmee uw kosten worden bepaald bij het uitvoeren van uw apps in het Flex Consumption-abonnement. Elke modus wordt per instantie bepaald.

Factureringsmodus Beschrijving
Op aanvraag Wanneer u in de modus op aanvraag wordt uitgevoerd, worden alleen kosten in rekening gebracht voor de hoeveelheid tijd die uw functiecode uitvoert op uw beschikbare exemplaren. In de modus op aanvraag is er geen minimumaantal exemplaren vereist. U wordt gefactureerd voor:

• De totale hoeveelheid geheugen die is ingericht terwijl elk exemplaar op aanvraag actief functies uitvoert (in GB-seconden), min een gratis toekenning van GB-s per maand.
• Het totale aantal uitvoeringen, min een gratis toekenning (aantal) uitvoeringen per maand.
Altijd gereed U kunt een of meer exemplaren configureren die zijn toegewezen aan specifieke triggertypen (HTTP/Durable/Blob) en afzonderlijke functies die altijd beschikbaar zijn voor het verwerken van aanvragen. Wanneer er altijd gereede instanties zijn ingeschakeld, wordt u gefactureerd voor:

• De totale hoeveelheid geheugen die is ingericht voor al uw altijd gereede exemplaren, ook wel de basislijn genoemd (in GB-seconden).
• De totale hoeveelheid geheugen die is ingericht tijdens de tijd dat elk altijd gereed exemplaar actief functies uitvoert (in GB-seconden).
• Het totale aantal uitvoeringen.

In altijd gereede facturering zijn er geen gratis subsidies.

Zie de pagina met prijzen voor Azure Functions voor actuele informatie over de prijzen van de uitvoering, altijd gereed voor basislijnkosten en gratis subsidies voor uitvoeringen op aanvraag.

Dit diagram geeft aan hoe on-demand kosten in dit plan worden bepaald:

Grafiek van flexverbruiksabonnement op aanvraagkosten op basis van zowel belasting (aantal instanties) als tijd.

Naast uitvoeringstijd, wanneer u een of meer altijd gereede exemplaren gebruikt, wordt u ook gefactureerd met een lager basislijntarief voor het aantal altijd gereede exemplaren dat u onderhoudt. Uitvoeringstijd voor altijd gereede exemplaren is mogelijk goedkoper dan uitvoeringstijd op exemplaren met uitvoering op aanvraag.

Belangrijk

In dit artikel worden prijzen op aanvraag gebruikt om inzicht te verkrijgen in voorbeeldberekeningen. Controleer altijd de huidige kosten op de pagina met prijzen van Azure Functions bij het schatten van de kosten die u mogelijk ondervindt tijdens het uitvoeren van uw functies in het Flex Consumption-abonnement.

Overweeg een functie-app die alleen bestaat uit HTTP-triggers met en deze basisfeiten:

  • HTTP-triggers verwerken 40 constante aanvragen per seconde.
  • HTTP-triggers verwerken 10 gelijktijdige aanvragen.
  • De instelling voor de geheugengrootte van het exemplaar is 2048 MB.
  • Er zijn geen altijd gereede exemplaren geconfigureerd, wat betekent dat de app kan worden geschaald naar nul.

In een dergelijke situatie zijn de prijzen afhankelijk van het soort werk dat wordt uitgevoerd tijdens het uitvoeren van code. Laten we eens kijken naar twee workloadscenario's:

  • CPU-afhankelijke workload: In een CPU-afhankelijke workload is er geen voordeel dat meerdere aanvragen parallel in hetzelfde exemplaar worden verwerkt. Dit betekent dat u elke aanvraag beter kunt distribueren naar een eigen exemplaar, zodat aanvragen zo snel mogelijk worden voltooid zonder conflicten. In dit scenario moet u een lage HTTP-trigger gelijktijdigheid van 1. Met 10 gelijktijdige aanvragen wordt de app geschaald naar een stabiele status van ongeveer 10 exemplaren en wordt elke instantie continu één aanvraag tegelijk verwerkt.

    Omdat de grootte van elke instantie ongeveer 2 GB is, is 2 GB * 3600 s = 7200 GB-shet verbruik voor één continu actief exemplaar, dat bij de veronderstelde uitvoeringssnelheid op aanvraag (zonder gratis subsidies) per uur per instantie is $0.1152 USD . Omdat de CPU-gebonden app wordt geschaald naar 10 exemplaren, is $1.152 USDhet totale uurtarief voor uitvoeringstijd.

    Op dezelfde manier zijn de on-demand kosten per uitvoering (zonder gratis subsidies) van 40 aanvragen per seconde gelijk aan 40 * 3600 = 144,000 of 0,144 miljoen uitvoeringen per uur. De totale (toekenningsvrije) uurkosten van uitvoeringen zijn dan 0.144 * $0.20, wat per uur is $0.0288 .

    In dit scenario zijn $1.152 + $0.0288 = $1.1808 USDde totale uurkosten voor het uitvoeren van on-demand op 10 exemplaren .

  • Io-gebonden werkbelasting: in een IO-afhankelijke workload wordt de meeste toepassingstijd besteed aan het wachten op binnenkomende aanvragen, die mogelijk worden beperkt door netwerkdoorvoer of andere upstreamfactoren. Vanwege de beperkte invoer kan de code meerdere bewerkingen gelijktijdig verwerken zonder negatieve gevolgen. In dit scenario wordt ervan uitgegaan dat u alle 10 gelijktijdige aanvragen op hetzelfde exemplaar kunt verwerken.

    Omdat verbruikskosten alleen zijn gebaseerd op het geheugen van elke actieve instantie, is de berekening van de verbruikskosten simpelweg 2 GB * 3600 s = 7200 GB-s, die tegen de veronderstelde uitvoeringssnelheid op aanvraag (zonder gratis subsidies) per uur voor het ene exemplaar is $0.1152 USD toegepast.

    Net als in het CPU-gebonden scenario zijn de kosten per uitvoering op aanvraag (zonder gratis subsidies) van 40 aanvragen per seconde gelijk aan 40 * 3600 = 144,000 of 0,144 miljoen uitvoeringen per uur. In dit geval zijn de totale (toekenningsvrije) uurkosten van uitvoeringen 0.144 * $0.20, die per uur zijn $0.0288 .

    In dit scenario zijn $0.1152 + $0.0288 = $0.144 USDde totale uurkosten voor het uitvoeren van on-demand op één exemplaar.

Bij het schatten van de totale kosten voor het uitvoeren van uw functies in elk plan, moet u er rekening mee houden dat de Functions-runtime gebruikmaakt van verschillende andere Azure-services, die afzonderlijk worden gefactureerd. Wanneer u prijzen voor functie-apps inschatten, moeten alle triggers en bindingen die u met andere Azure-services integreert, maken en betalen voor die andere services.

Voor functies die worden uitgevoerd in een verbruiksabonnement, zijn de totale kosten de uitvoeringskosten van uw functies, plus de kosten van bandbreedte en andere services.

Gebruik de Azure-prijscalculator bij het schatten van de totale kosten van uw functie-app en gerelateerde services.

Gerelateerde kosten Beschrijving
Opslagaccount Voor elke functie-app moet u een gekoppeld Azure Storage-account voor algemeen gebruik hebben, dat afzonderlijk wordt gefactureerd. Dit account wordt intern gebruikt door de Functions-runtime, maar u kunt dit ook gebruiken voor opslagtriggers en -bindingen. Als u geen opslagaccount hebt, wordt er een voor u gemaakt wanneer de functie-app wordt gemaakt. Zie de vereisten voor opslagaccounts voor meer informatie.
Application Insights Functies zijn afhankelijk van Application Insights om een krachtige bewakingservaring te bieden voor uw functie-apps. Hoewel dit niet vereist is, moet u Application Insights-integratie inschakelen. Elke maand wordt een gratis toekenning van telemetriegegevens opgenomen. Zie de pagina met prijzen van Azure Monitor voor meer informatie.
Netwerkbandbreedte U kunt kosten in rekening brengen voor gegevensoverdracht, afhankelijk van de richting en het scenario van de gegevensverplaatsing. Zie prijsinformatie voor bandbreedte voor meer informatie.

Gedrag dat van invloed is op de uitvoeringstijd

Het volgende gedrag van uw functies kan van invloed zijn op de uitvoeringstijd:

  • Triggers en bindingen: de tijd die nodig is om invoer van en schrijfuitvoer naar uw functiebindingen te lezen, wordt geteld als uitvoeringstijd. Wanneer uw functie bijvoorbeeld een uitvoerbinding gebruikt om een bericht naar een Azure-opslagwachtrij te schrijven, bevat de uitvoeringstijd de tijd die nodig is om het bericht naar de wachtrij te schrijven, dat is opgenomen in de berekening van de functiekosten.

  • Asynchrone uitvoering: de tijd waarop uw functie wacht op de resultaten van een asynchrone aanvraag (await in C#) wordt geteld als uitvoeringstijd. De berekening gb-seconde is gebaseerd op de begin- en eindtijd van de functie en het geheugengebruik gedurende die periode. Wat er in die tijd gebeurt in termen van CPU-activiteit, wordt niet meegenomen in de berekening. U kunt mogelijk kosten verlagen tijdens asynchrone bewerkingen met behulp van Durable Functions. Er worden geen kosten in rekening gebracht voor tijd die is besteed aan wachtpunten in orchestratorfuncties.

In uw factuur kunt u de kostengerelateerde gegevens van Totale uitvoeringen - Functies en Uitvoeringstijd - Functies bekijken, samen met de werkelijke gefactureerde kosten. Deze factuurgegevens zijn echter een maandelijkse samenvoeging voor een eerdere factuurperiode.

Metrische gegevens op functie-app-niveau

Als u meer inzicht wilt krijgen in de kosten van uw functies, kunt u Azure Monitor gebruiken om kostengerelateerde metrische gegevens weer te geven die momenteel worden gegenereerd door uw functie-apps.

Gebruik Metrics Explorer van Azure Monitor om kostengerelateerde gegevens voor uw functie-apps voor verbruiksabonnementen in een grafische indeling weer te geven.

  1. Navigeer in Azure Portal naar uw functie-app.

  2. Schuif in het linkerdeelvenster omlaag naar Bewaking en kies Metrische gegevens.

  3. Kies in Metrisch het aantal uitvoeringen van functies en som voor aggregatie. Hiermee wordt de som van de uitvoeringsaantallen tijdens de gekozen periode aan de grafiek toegevoegd.

    Een metrische functie-app definiëren die moet worden toegevoegd aan de grafiek

  4. Selecteer Metrische gegevens toevoegen en herhaal stap 2-4 om functie-uitvoeringseenheden toe te voegen aan de grafiek.

De resulterende grafiek bevat de totalen voor beide metrische uitvoeringsgegevens in het gekozen tijdsbereik, in dit geval twee uur.

Grafiek van het aantal uitvoeringen van functies en uitvoeringseenheden

Omdat het aantal uitvoeringseenheden zoveel groter is dan het aantal uitvoeringen, worden in de grafiek alleen uitvoeringseenheden weergegeven.

In deze grafiek ziet u een totaal van 1,11 miljard Function Execution Units verbruikt in een periode van twee uur, gemeten in MB-milliseconden. Als u wilt converteren naar GB-seconden, deelt u deze door 1024000. In dit voorbeeld verbruikt 1110000000 / 1024000 = 1083.98 de functie-app GB-seconden. U kunt deze waarde nemen en vermenigvuldigen met de huidige prijs van de uitvoeringstijd op de pagina Functions-prijzen, die u de kosten van deze twee uur geeft, ervan uitgaande dat u al gratis toekenningen van uitvoeringstijd hebt gebruikt.

Metrische gegevens op functieniveau

Functie-uitvoeringseenheden zijn een combinatie van uitvoeringstijd en uw geheugengebruik, waardoor het lastig is om inzicht te krijgen in het geheugengebruik. Geheugengegevens zijn momenteel geen metrische gegevens die beschikbaar zijn via Azure Monitor. Als u echter het geheugengebruik van uw app wilt optimaliseren, kunt u de prestatiemeteritems gebruiken die worden verzameld door Application Insights.

Als u dit nog niet hebt gedaan, schakelt u Application Insights in uw functie-app in. Als deze integratie is ingeschakeld, kunt u deze telemetriegegevens opvragen in de portal.

U kunt Azure Monitor Metrics Explorer gebruiken in Azure Portal of REST API's om metrische gegevens van de monitor op te halen.

Geheugengebruik bepalen

Selecteer Logboeken (Analytics) onder Bewaking, kopieer de volgende telemetriequery en plak deze in het queryvenster en selecteer Uitvoeren. Deze query retourneert het totale geheugengebruik op elke steekproeftijd.

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

De resultaten zien eruit als in het volgende voorbeeld:

timestamp [UTC] naam waarde
9/12/2019, 1:05:14.947 AM Privébytes 209,932,288
9/12/2019, 1:06:14.994 AM Privébytes 212,189,184
12-9-2019, 1:06:30.010 uur Privébytes 231,714,816
12-9-2019, 1:07:15.040 uur Privébytes 210,591,744
12-9-2019, 1:12:16.285 AM Privébytes 216,285,184
9-12-2019, 1:12:31.376 AM Privébytes 235,806,720

Duur bepalen

Azure Monitor houdt metrische gegevens bij op resourceniveau, wat voor Functions de functie-app is. Application Insights-integratie verzendt metrische gegevens per functie. Hier volgt een voorbeeld van een analysequery om de gemiddelde duur van een functie op te halen:

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

Volgende stappen