Abschätzen nutzungsbasierter Kosten
In diesem Artikel erfahren Sie, wie Sie die Kosten für einen Hostingplan im Verbrauchstarif und im Flex-Verbrauchstarif abschätzen können.
Azure Functions bietet derzeit vier verschiedene Hostingpläne für Ihre Funktions-Apps, wobei jeder Plan über ein eigenes Preismodell verfügt:
Planen | BESCHREIBUNG |
---|---|
Verbrauch | Ihnen wird nur die Zeit in Rechnung gestellt, die Ihre Funktions-App auch ausgeführt wird. Dieser Tarif umfasst pro Abonnement eine kostenlose Zuweisung. |
Flex-Verbrauchstarif | Sie zahlen die Ausführungszeit für die Instanzen, auf denen Ihre Funktionen ausgeführt werden, sowie alle immer einsatzbereiten Instanzen. Instanzen werden basierend auf der Anzahl eingehender Ereignisse dynamisch hinzugefügt und entfernt. Die Integration virtueller Netzwerke wird ebenfalls unterstützt. |
Premium | Bietet Ihnen dieselben Features und Skalierungsmechanismen wie der Verbrauchstarif, aber mit mehr Leistung und einer Integration virtueller Netzwerke. Die Kosten basieren auf dem von Ihnen gewählten Tarif. Weitere Informationen finden Sie unter Premium-Plan (Premium-Tarif) für Azure Functions. |
Dediziert (App Service) (Tarif „Basic“ oder höher) |
Wenn Sie in dedizierten VMs oder in Isolierung ausführen müssen, benutzerdefinierte Images verwenden oder die Überkapazität Ihres App Service-Plans nutzen möchten. Verwendet normale App Service-Planabrechnung. Die Kosten basieren auf dem von Ihnen gewählten Tarif. |
Wichtig
Der Flex-Verbrauchstarif befindet sich derzeit in der Vorschau.
Sie sollten immer den Tarif auswählen, der die Feature-, Leistungs- und Kostenanforderungen für Ihre Funktionsausführung am besten unterstützt. Weitere Informationen finden Sie unter Skalierung und Hosting von Azure Functions.
Der Schwerpunkt dieses Artikels liegt auf Verbrauchs- und Flex-Verbrauchstarifen, da die Abrechnung in diesen Tarifen von aktiven Ausführungszeiträumen innerhalb jeder Instanz abhängt.
Durable Functions können ebenfalls in beiden Tarifen ausgeführt werden. Weitere Informationen zu den Kostenüberlegungen bei der Verwendung von Durable Functions finden Sie unter Abrechnung von Durable Functions.
Nutzungsbasierte Kosten
Die Berechnung nutzungsbasierter Kosten, einschließlich kostenloser Zuweisungen, hängt vom jeweiligen Tarif ab. Die aktuellsten Informationen zu Kosten und Zuweisungen finden Sie auf der Seite Azure Functions – Preise.
Die Ausführungskosten einer einzelnen Funktionsausführung werden in GB-Sekunden gemessen. Die Ausführungskosten werden berechnet, indem die Speichernutzung mit der Ausführungsdauer kombiniert wird. Eine Funktion, die länger ausgeführt wird, kostet mehr, ebenso wie eine Funktion, die mehr Arbeitsspeicher verbraucht.
Stellen Sie sich einen Fall vor, bei dem die von der Funktion verwendete Arbeitsspeichermenge konstant bleibt. In diesem Fall erfolgt die Berechnung der Kosten durch einfache Multiplikation. Nehmen wir beispielsweise an, dass ihre Funktion 0,5 GB für 3 Sekunden verbraucht hat. Dann betragen die Ausführungskosten 0.5GB * 3s = 1.5 GB-seconds
.
Da sich die Speichernutzung im Laufe der Zeit ändert, ist die Berechnung im Wesentlichen das Integral der Arbeitsspeichernutzung im Lauf der Zeit. Das System führt diese Berechnung durch, indem die Speichernutzung des Prozesses (zusammen mit untergeordneten Prozessen) in regelmäßigen Abständen stichprobenhaft erfasst wird. Wie auf der Seite mit der Preisübersicht erwähnt, wird die Speichernutzung auf den nächstgelegenen 128-MB-Bucket aufgerundet. Wenn Ihr Prozess 160 MB verwendet, werden Ihnen 256 MB in Rechnung gestellt. Die Berechnung berücksichtigt dabei die Parallelität, bei der es sich um die gleichzeitige Ausführung mehrerer Funktionen im selben Prozess handelt.
Hinweis
Obwohl die CPU-Nutzung in den Ausführungskosten nicht direkt berücksichtigt wird, kann sie sich auf die Kosten auswirken, wenn sie die Ausführungszeit der Funktion beeinflusst.
Bei durch HTTP ausgelösten Funktionen werden Ihnen keine Ausführungen in Rechnung gestellt, wenn ein Fehler auftritt, bevor die Ausführung Ihres Funktionscodes beginnt. Dies bedeutet, dass 401-Antworten von der Plattform aufgrund der API-Schlüsselüberprüfung oder des Authentifizierungs-/Autorisierungsfeatures von App Service nicht auf Ihre Ausführungskosten angerechnet werden. Ebenso werden 5xx-Statuscodeantworten nicht gezählt, wenn diese auf der Plattform auftreten, bevor eine Funktion die Anforderung verarbeitet. Eine 5xx-Antwort, die nach dem Ausführungsbeginn Ihres Funktionscodes generiert wurde, wird dennoch als Ausführung gezählt, selbst wenn der Fehler nicht von Ihrem Funktionscode ausgelöst wird.
Andere verwandte Kosten
Wenn Sie die Gesamtkosten der Ausführung ihrer Funktionen in einem beliebigen Plan abschätzen, denken Sie daran, dass die Functions-Laufzeit mehrere andere Azure-Dienste verwendet, die jeweils gesondert abgerechnet werden. Wenn Sie Preise für Funktions-Apps abschätzen, müssen Sie für alle Trigger und Bindungen, die mit anderen Azure-Diensten integriert werden, diese anderen Dienste erstellen und dafür bezahlen.
Für Funktionen, die in einem Verbrauchstarif ausgeführt werden, bestehen die Gesamtkosten aus den Ausführungskosten ihrer Funktionen plus den Kosten für Bandbreite und andere Dienste.
Wenn Sie die Gesamtkosten für ihre Funktions-App und der zugehörige Dienste abschätzen, verwenden Sie den Azure-Preisrechner.
Verwandte Kosten | BESCHREIBUNG |
---|---|
Speicherkonto | Für jede Funktions-App ist es erforderlich, dass Sie über ein zugeordnetes universelles Azure Storage-Konto verfügen, das gesondert abgerechnet wird. Dieses Konto wird von der Functions-Laufzeit intern verwendet, aber Sie können es auch für Storage-Trigger und -Bindungen verwenden. Wenn Sie kein Speicherkonto besitzen, wird mit der Erstellung der Funktions-App eins für Sie erstellt. Weitere Informationen finden Sie unter Speicherkontoanforderungen. |
Application Insights | Functions basiert auf Application Insights, um eine Hochleistungsüberwachungs-Erfahrung für Ihre Funktions-Apps bereitzustellen. Wenn dies auch nicht erforderlich ist, sollten Sie doch die Application Insights-Integration aktivieren. Monatlich ist eine kostenlose Zuweisung von Telemetriedaten enthalten. Weitere Informationen finden Sie auf der Seite mit der Preisübersicht für Azure Monitor. |
Netzwerkbandbreite | Je nach Richtung und Szenario der Datenverschiebung können Kosten für die Datenübertragung anfallen. Weitere Informationen finden Sie in den Bandbreitenpreisdetails. |
Verhalten, die die Ausführungszeit beeinflussen
Die folgenden Verhalten Ihrer Funktionen können sich auf die Ausführungszeit auswirken:
Trigger und Bindungen: Die Zeit, die das Lesen von Eingaben aus Ihren und das Schreiben der Ausgaben in Ihre Funktionsbindungen benötigt, wird als Ausführungszeit gezählt. Wenn Ihre Funktion beispielsweise eine Ausgabenbindung verwendet, um eine Nachricht in eine Azure Storage-Warteschlange zu schreiben, beinhaltet Ihre Ausführungszeit die Zeit, die zum Schreiben der Nachricht in die Warteschlange benötigt wird, was in die Berechnung der Funktionskosten einfließt.
Asynchrone Ausführung: Die Zeit, die Ihre Funktion auf die Ergebnisse einer asynchronen Anforderung wartet (
await
in C#), wird als Ausführungszeit gezählt. Die GB-Sekunden-Berechnung basiert auf der Start- und Endzeit der Funktion und der Arbeitsspeichernutzung in diesem Zeitraum. Was im Verlauf dieses Zeitraums hinsichtlich der CPU-Aktivität geschieht, wird nicht in die Berechnung einbezogen. Sie können die Kosten möglicherweise während asynchroner Vorgänge verringern, indem Sie Durable Functions verwenden. In awaits verbrachte Zeit wird Ihnen für Orchestratorfunktionen nicht berechnet.
Anzeigen von kostenbezogenen Daten
In Ihrer Rechnung können Sie die kostenbezogenen Daten Total Executions – Functions (Ausführungen gesamt) und Execution Time – Functions (Ausführungszeit) zusammen mit den tatsächlich abgerechneten Kosten sehen. Diese Rechnungsdaten stellen jedoch eine monatliche Aggregation für einen vergangenen Abrechnungszeitraum dar.
Metriken auf Ebene der Funktions-App
Um die Kostenauswirkungen Ihrer Funktionen besser zu verstehen, können Sie Azure Monitor verwenden, um kostenbezogene Metriken anzuzeigen, die von Ihren Funktions-Apps generiert werden.
Verwenden Sie den Azure Monitor-Metrik-Explorer, um kostenbezogene Daten für Ihre Funktions-Apps im Verbrauchstarif in einem grafischen Format anzuzeigen.
Navigieren Sie im Azure-Portal zu Ihrer Funktions-App.
Scrollen Sie im linken Bereich nach unten zu Überwachung, , und wählen Sie die Option Metriken aus.
Wählen Sie in Metrik die Einträge Ausführungsanzahl für Funktion und Summe für Aggregation aus. Dadurch wird die Summe der Ausführungen während des gewählten Zeitraums dem Diagramm hinzugefügt.
Wählen Sie Metrik hinzufügen aus, und wiederholen Sie die Schritte 2–4, um dem Diagramm Ausführungseinheiten für Funktion hinzuzufügen.
Das resultierende Diagramm enthält die Summen für beide Ausführungsmetriken im ausgewählten Zeitraum, der in diesem Fall zwei Stunden beträgt.
Da die Anzahl der Ausführungseinheiten so viel höher ist, als die Ausführungen, zeigt das Diagramm nur die Ausführungseinheiten an.
Dieses Diagramm zeigt eine Gesamtzahl von 1,11 Mrd. Function Execution Units
, die in einem Zeitraum von zwei Stunden verbraucht wurden, gemessen in MB-Millisekunden. Um den Wert in GB-Sekunden umzuwandeln, teilen Sie durch 1.024.000. In diesem Beispiel hat die Funktions-App 1110000000 / 1024000 = 1083.98
GB-Sekunden verbraucht. Sie können diesen Wert mit dem aktuellen Preis der Ausführungszeit auf der Seite mit den Preisen für Azure Functions multiplizieren, wodurch Sie die Kosten für diese zwei Stunden erhalten – vorausgesetzt, Sie haben bereits alle zugewiesenen kostenlosen Ausführungszeiten verbraucht.
Metriken auf Funktionsebene
Funktionsausführungseinheiten sind eine Kombination aus Ausführungszeit und Ihrer Speichernutzung, was diese zu einer schwierigen Metrik macht, um die Speichernutzung zu verstehen. Arbeitsspeicherdaten sind keine aktuell in Azure Monitor verfügbare Metrik. Wenn Sie jedoch die Speichernutzung Ihrer App optimieren möchten, können Sie die von Application Insights erfassten Daten der Leistungsindikatoren verwenden.
Falls noch nicht geschehen, aktivieren Sie Application Insights in Ihrer Funktions-App. Mit dieser aktivierten Integration können Sie diese Telemetriedaten im Portal abfragen.
Zum Abrufen der Metrikdaten von Azure Monitor können Sie entweder den Azure Monitor-Metrik-Explorer im Azure-Portal oder REST-APIs verwenden.
Arbeitsspeichernutzung ermitteln
Wählen Sie unter Überwachung den Eintrag Protokolle (Analytics) aus, kopieren Sie dann die folgende Telemetrieabfrage, fügen Sie sie in das Abfragefenster ein, und wählen Sie Ausführen aus. Diese Abfrage gibt die Gesamtarbeitsspeichernutzung zu jedem Stichprobenzeitpunkt zurück.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
Die Ergebnisse sehen ungefähr wie folgt aus:
Zeitstempel [UTC] | name | value |
---|---|---|
12.9.2019, 1:05:14,947 Uhr | Private Bytes | 209.932.288 |
12.9.2019, 1:06:14,994 Uhr | Private Bytes | 212.189.184 |
12.9.2019, 1:06:30,010 Uhr | Private Bytes | 231.714.816 |
12.9.2019, 1:07:15,040 Uhr | Private Bytes | 210.591.744 |
12.9.2019, 1:12:16,285 Uhr | Private Bytes | 216.285.184 |
12.9.2019, 1:12:31,376 Uhr | Private Bytes | 235.806.720 |
Bestimmen der Dauer
Azure Monitor erfasst Metriken auf Ressourcenebene, wobei es sich für Functions um die Funktions-App handelt. Application Insights-Integration gibt Metriken pro Funktion aus. Im Folgenden finden Sie ein Beispiel für eine Analytics-Abfrage, mit der die durchschnittliche Dauer einer Funktion abgefragt wird:
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 |