Skalierung und Hosting von Azure FunctionsAzure Functions scale and hosting

Azure Functions wird in zwei verschiedenen Plänen (Tarifen) ausgeführt: Verbrauchstarif und Premium-Plan (öffentliche Vorschau).Azure Functions runs in two different plans: Consumption plan and Premium plan (public preview). Der Verbrauchstarif fügt automatisch Computeleistung hinzu, wenn Ihr Code ausgeführt wird.The Consumption plan automatically adds compute power when your code is running. Ihre App wird horizontal hochskaliert, wenn dies zur Verarbeitung der Last erforderlich ist, und herunterskaliert, wenn die Codeausführung beendet wurde.Your app is scaled out when needed to handle load, and scaled down when code stops running. Für virtuelle Computer im Leerlauf müssen Sie nichts bezahlen und auch keine Kapazitäten im Voraus reservieren.You don't have to pay for idle VMs or reserve capacity in advance. Der Premium-Plan bedingt ebenfalls automatisches Skalieren und Hinzufügen von Computeleistung, wenn Ihr Code ausgeführt wird.The Premium plan will also automatically scale and add additional compute power when your code is running. Zum Premium-Plan gehören zusätzliche Features wie Premium-Compute-Instanzen, die Möglichkeit, Instanzen unbegrenzt betriebsbereit zu halten, und VNET-Verbindungen.The Premium plan comes with additional features like premium compute instances, the ability to keep instances warm indefinitely, and VNet connectivity. Wenn Sie einen vorhandenen App Service-Plan haben, können Sie auch Ihre Funktions-Apps in ihnen ausführen.If you have an existing App Service Plan, you can also run your function apps within them.

Hinweis

Sowohl der Premium-Plan als auch der Verbrauchstarif für Linux liegen derzeit in der Vorschauversion vor.Both Premium plan and Consumption plan for Linux are currently in preview.

Wenn Sie mit Azure Functions nicht vertraut sind, informieren Sie sich in der Übersicht über Azure Functions.If you aren't familiar with Azure Functions, see the Azure Functions overview.

Wenn Sie eine Funktions-App erstellen, wählen Sie den Hostingplan für Funktionen in der App aus.When you create a function app, you choose the hosting plan for functions in the app. In beiden Plänen führt eine Instanz des Azure Functions-Hosts die Funktionen aus.In either plan, an instance of the Azure Functions host executes the functions. Der Plantyp steuert:The type of plan controls:

  • Wie Hostinstanzen horizontal hochskaliert werden.How host instances are scaled out.
  • Die Ressourcen, die für jeden Host verfügbar sind.The resources that are available to each host.
  • Instanzfeatures wie die VNET-Konnektivität.Instance features like VNet connectivity.

Hinweis

Sie können zwischen dem Verbrauchstarif und dem Premium-Plan wechseln, indem Sie die Plan-Eigenschaft der Funktions-App-Ressource ändern.You can switch between Consumption and Premium plans by changing the plan property of the function app resource.

VerbrauchsplanConsumption plan

Bei Verwendung des Verbrauchstarifs werden Instanzen des Azure Functions-Hosts dynamisch basierend auf der Anzahl der eingehenden Ereignisse hinzugefügt und entfernt.When you're using the Consumption plan, instances of the Azure Functions host are dynamically added and removed based on the number of incoming events. Dieser serverlose Plan wird automatisch skaliert, sodass Ihnen nur dann Computeressourcen berechnet werden, wenn Ihre Funktionen ausgeführt werden.This serverless plan scales automatically, and you're charged for compute resources only when your functions are running. In einem Verbrauchsplan tritt für eine Funktionsausführung nach einem konfigurierbaren Zeitraum ein Timeout auf.On a Consumption plan, a function execution times out after a configurable period of time.

Die Abrechnung erfolgt auf der Grundlage der Anzahl von Ausführungen, der Ausführungszeit und des verwendeten Arbeitsspeichers.Billing is based on number of executions, execution time, and memory used. Die Abrechnung wird für alle Funktionen innerhalb einer Funktions-App aggregiert.Billing is aggregated across all functions within a function app. Weitere Informationen finden Sie unter [Azure Functions – Preise].For more information, see the [Azure Functions pricing page].

Der Verbrauchsplan ist der Standardhostingplan. Er bietet folgende Vorteile:The Consumption plan is the default hosting plan and offers the following benefits:

  • Sie bezahlen nur, wenn Ihre Funktionen ausgeführt werden.Pay only when your functions are running.
  • Das horizontale Hochskalieren erfolgt automatisch – selbst in Zeiten hoher Lasten.Scale out automatically, even during periods of high load.

Premium-Plan (öffentliche Vorschauversion)Premium plan (public preview)

Bei Verwendung des Premium-Plans werden Instanzen des Azure Functions-Hosts schnell basierend auf der Anzahl der eingehenden Ereignisse hinzugefügt und entfernt, so, wie dies im Verbrauchstarif erfolgt.When you're using the Premium plan, instances of the Azure Functions host are rapidly added and removed based on the number of incoming events just like the consumption plan. Allerdings bietet der Premium-Plan zusätzlich Folgendes:However, the Premium plan also offers:

  • Immer betriebsbereite (warme) Instanzen, um jegliche Kaltstarts zu vermeidenAlways warm instances to avoid any cold start.
  • VNet-KonnektivitätVNet connectivity.
  • Unbegrenzte AusführungsdauerUnlimited execution duration.
  • Premium-Instanzgrößen (Instanz mit einem Kern, mit zwei Kernen und mit vier Kernen)Premium instance sizes (one core, two core, and four core instances).
  • Vorhersagbare PreisoptionenPredictable pricing options.
  • App-Zuteilung mit hoher Dichte für Pläne mit mehrere Funktions-AppsHigh-density app allocation for plans with multiple function apps.

Informationen dazu, wie Sie diese Optionen konfigurieren, finden Sie im Azure Functions-Premium-Plan.Information on how you can configure these options can be found in the Azure Functions premium plan.

Anstatt pro Ausführung und genutztem Arbeitsspeicher abzurechnen, basiert die Abrechnung auf der Anzahl der Kernsekunden und Gigabytesekunden, die für benötigte und reservierte Instanzen verwendet wurden.Instead of billing per execution and memory consumed, billing is based on the number of core seconds and GB seconds used across needed and reserved instances. Mindestens eine Instanz muss ständig betriebsbereit (warm) sein, sodass es feste monatliche Kosten pro Plan gibt, der aktiv ist (unabhängig von der Anzahl der Ausführungen).At least one instance is required to be warm at all times, so there is a fixed monthly cost per plan that is active (regardless of the number of executions).

Betrachten Sie den Azure Functions-Premium-Plan in den folgenden Fällen:Consider the Azure Functions premium plan in the following cases:

  • Ihre Funktions-Apps werden kontinuierlich oder nahezu kontinuierlich ausgeführt.Your function apps run continuously, or nearly continuously. In diesem Fall kann ein App Service-Plan kostengünstiger sein.In this case, an App Service Plan can be more cost-effective.
  • Sie benötigen weitere CPU- oder Arbeitsspeicheroptionen zusätzlich zu den für den Verbrauchsplan bereitgestellten.You need more CPU or memory options than what is provided on the Consumption plan.
  • Ihr Code muss länger ausgeführt werden, als im Verbrauchsplan als maximal zulässige Ausführungsdauer angegeben ist.Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • Sie benötigen Funktionen, die nur mit einem App Service-Plan verfügbar sind, etwa Unterstützung für App Service-Umgebung, VNET/VPN-Konnektivität und größere virtuelle Computer.You require features that are only available on an App Service plan, such as support for App Service Environment, VNET/VPN connectivity, and larger VM sizes.

Hinweis

Die Vorschauversion des Premium-Plans unterstützt derzeit die Funktionen, die in .NET, Node oder Java über Windows-Infrastruktur ausgeführt werden.The premium plan preview currently supports functions running in .NET, Node, or Java through Windows infrastructure.

Wenn Sie JavaScript-Funktionen im Rahmen eines Premium-Plans ausführen, sollten Sie eine Instanz auswählen, die weniger vCPUs hat.When running JavaScript functions on a Premium plan, you should choose an instance that has fewer vCPUs. Weitere Informationen finden Sie unter Auswählen von Premium-Plänen mit Einzelkern.For more information, see the Choose single-core Premium plans.

App Service-PlanApp Service plan

Ihre Funktions-Apps können auf denselben dedizierten virtuellen Computern wie andere App Service-Apps ausgeführt werden (Basic-, Standard-, Premium- und isolierte SKUs).Your function apps can also run on the same dedicated VMs as other App Service apps (Basic, Standard, Premium, and Isolated SKUs). App Service-Pläne unterstützen Linux.App Service plans support Linux.

Entscheiden Sie sich in den folgenden Fällen für einen App Service-Plan:Consider an App Service plan in the following cases:

  • Sie verfügen über nicht ausgelastete virtuelle Computer, auf denen bereits andere App Service-Instanzen ausgeführt werden.You have existing, underutilized VMs that are already running other App Service instances.
  • Sie möchten Ihre Funktions-App unter Linux ausführen oder ein benutzerdefiniertes Image zum Ausführen Ihrer Funktionen bereitstellen.You want to run your function app on Linux, or you want to provide a custom image on which to run your functions.

Sie zahlen für Funktions-Apps in einem App Service-Plan das gleiche wie für andere App Service-Ressourcen, etwa Web-Apps.You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. Weitere Informationen zur Funktionsweise von App Service-Plänen finden Sie unter Azure App Service-Pläne – Detaillierte Übersicht.For details about how the App Service plan works, see the Azure App Service plans in-depth overview.

Mit einem App Service-Plan können Sie manuell horizontal hochskalieren, indem Sie weitere Instanzen von virtuellen Computern hinzufügen, oder Sie können die automatische Skalierung aktivieren.With an App Service plan, you can manually scale out by adding more VM instances, or you can enable autoscale. Weitere Informationen finden Sie unter Manuelles oder automatisches Skalieren der Instanzenzahl.For more information, see Scale instance count manually or automatically. Sie können auch zentral hochskalieren, indem Sie einen anderen App Service-Plan auswählen.You can also scale up by choosing a different App Service plan. Weitere Informationen finden Sie unter Zentrales Hochskalieren einer App in Azure.For more information, see Scale up an app in Azure.

Wenn Sie JavaScript-Funktionen im Rahmen eines App Service-Plans ausführen, sollten Sie einen Plan mit weniger vCPUs wählen.When running JavaScript functions on an App Service plan, you should choose a plan that has fewer vCPUs. Weitere Informationen finden Sie unter Auswählen von Einzelkern-App Service-Plänen.For more information, see Choose single-core App Service plans.

Always OnAlways On

Wenn Sie einen App Service-Plan verwenden, müssen Sie die Einstellung Always On aktivieren, damit Ihre Funktions-App ordnungsgemäß ausgeführt wird.If you run on an App Service plan, you should enable the Always on setting so that your function app runs correctly. Bei einem App Service-Plan geht die Functions-Runtime nach wenigen Minuten der Inaktivität in den Leerlauf über, sodass nur HTTP-Trigger Ihre Funktionen tatsächlich „reaktivieren“ können.On an App Service plan, the functions runtime goes idle after a few minutes of inactivity, so only HTTP triggers will "wake up" your functions. Always On ist nur bei einem App Service-Plan verfügbar.Always on is available only on an App Service plan. Bei einem Verbrauchsplan aktiviert die Plattform Funktions-Apps automatisch.On a Consumption plan, the platform activates function apps automatically.

Funktions-App-TimeoutdauerFunction app timeout duration

Die Timeoutdauer einer Funktions-App wird durch die functionTimeout-Eigenschaft in der host.json-Projektdatei definiert.The timeout duration of a function app is defined by the functionTimeout property in the host.json project file. Die folgende Tabelle listet die Standard- und Maximalwerte in Minuten für beide Pläne und beide Laufzeitversionen auf:The following table shows the default and maximum values in minutes for both plans and in both runtime versions:

PlanPlan LaufzeitversionRuntime Version StandardDefault MaximumMaximum
NutzungConsumption 1.x1.x 55 1010
NutzungConsumption 2.x2.x 55 1010
App ServiceApp Service 1.x1.x UnbegrenztUnlimited UnbegrenztUnlimited
App ServiceApp Service 2.x2.x 3030 UnbegrenztUnlimited

Hinweis

Unabhängig von der Timeouteinstellung der Funktions-App stellen 230 Sekunden die längste Zeit dar, die einer über HTTP ausgelösten Funktion bis zur Reaktion auf eine Anfrage bleibt.Regardless of the function app timeout setting, 230 seconds is the maximum amount of time that an HTTP triggered function can take to respond to a request. Dies hat seinen Grund im Standard-Leerlauftimeout von Azure Load Balancer.This is because of the default idle timeout of Azure Load Balancer. Erwägen Sie für längere Verarbeitungszeiten die Verwendung des asynchronen Durable Functions-Musters oder stellen Sie die eigentliche Arbeit zurück, und geben Sie unmittelbar eine Antwort zurück.For longer processing times, consider using the Durable Functions async pattern or defer the actual work and return an immediate response.

Informationen zum HostingplanWhat is my hosting plan

Wenn Sie den von Ihrer Funktions-App verwendeten Hostingplan ermitteln möchten, sehen Sie im Azure-Portal auf der Registerkarte Übersicht für die Funktions-App unter App Service-Plan/-Tarif nach.To determine the hosting plan used by your function app, see App Service plan / pricing tier in the Overview tab for the function app in the Azure portal. Bei App Service-Plänen ist auch der Tarif angegeben.For App Service plans, the pricing tier is also indicated.

Anzeigen des Skalierungsplans im Portal

Sie können auch die Azure-Befehlszeilenschnittstelle verwenden, um den Plan auf folgende Weise zu ermitteln:You can also use the Azure CLI to determine the plan, as follows:

appServicePlanId=$(az functionapp show --name <my_function_app_name> --resource-group <my_resource_group> --query appServicePlanId --output tsv)
az appservice plan list --query "[?id=='$appServicePlanId'].sku.tier" --output tsv

Wenn die Ausgabe dieses Befehls dynamic lautet, ist Ihre Funktions-App im Verbrauchsplan enthalten.When the output from this command is dynamic, your function app is in the Consumption plan. Wenn die Ausgabe dieses Befehls ElasticPremium lautet, ist Ihre Funktions-App im Premium-Plan enthalten.When the output from this command is ElasticPremium, your function app is in the Premium plan. Alle anderen Werte geben Stufen eines App Service-Plans an.All other values indicate tiers of an App Service plan.

Auch bei aktiviertem Always On wird das Ausführungstimeout für einzelne Funktionen durch die Einstellung functionTimeout in der host.json-Projektdatei gesteuert.Even with Always On enabled, the execution timeout for individual functions is controlled by the functionTimeout setting in the host.json project file.

Anforderungen an das SpeicherkontoStorage account requirements

Bei jedem Plan erfordert eine Funktions-App ein allgemeines Azure Storage-Konto, das Azure-Blob-, Warteschlangen-, Datei- und Tabellenspeicher unterstützt.On any plan, a function app requires a general Azure Storage account, which supports Azure Blob, Queue, Files, and Table storage. Der Grund dafür ist, dass Functions bei Vorgängen wie dem Verwalten von Triggern und Protokollieren von Funktionsausführungen auf Azure Storage zurückgreift, einige Speicherkonten jedoch keine Warteschlangen und Tabellen unterstützen.This is because Functions rely on Azure Storage for operations such as managing triggers and logging function executions, but some storage accounts do not support queues and tables. Diese Konten, zu denen reine Blobspeicherkonten (einschließlich Storage Premium) und allgemeine Speicherkonten mit zonenredundanter Speicherreplikation gehören, werden aus den vorhandenen Auswahlmöglichkeiten für Speicherkonto herausgefiltert, wenn Sie eine Funktions-App erstellen.These accounts, which include blob-only storage accounts (including premium storage) and general-purpose storage accounts with zone-redundant storage replication, are filtered-out from your existing Storage Account selections when you create a function app.

Weitere Informationen zu Speicherkontentypen finden Sie unter Einführung in die Azure Storage-Dienste.To learn more about storage account types, see Introducing the Azure Storage services.

Funktionsweise von Verbrauchsplan (Verbrauchstarif) und Premium-PlanHow the consumption and premium plans work

Im Verbrauchsplan und im Premium-Plan skaliert der Skalierungscontroller CPU- und Arbeitsspeicherressourcen automatisch, indem dem Functions-Host basierend auf der Anzahl der Ereignisse, nach denen die Funktionen ausgelöst werden, weitere Instanzen hinzugefügt werden.In the consumption and premium plans, the scale controller automatically scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. Jede Instanz des Functions-Hosts im Verbrauchsplan ist auf 1,5 GB Arbeitsspeicher und 1 CPU beschränkt.Each instance of the Functions host in the consumption plan is limited to 1.5 GB of memory and 1 CPU. Eine Instanz des Hosts ist die gesamte Funktions-App, d. h., alle Funktionen innerhalb einer Funktions-App verwenden innerhalb einer Instanz dieselbe Ressource und werden gleichzeitig skaliert.An instance of the host is the entire function app, meaning all functions within a function app share resource within an instance and scale at the same time. Funktions-Apps, die denselben Verbrauchsplan nutzen, werden unabhängig voneinander skaliert.Function apps that share the same consumption plan are scaled independently. Im Premium-Plan bestimmt Ihre Plangröße den verfügbaren Arbeitsspeicher und die verfügbare CPU für alle Apps in diesem Plan für diese Instanz.In the premium plan, your plan size will determine the available memory and CPU for all apps in that plan on that instance.

Funktionscodedateien werden in Azure Files-Freigaben im Hauptspeicherkonto der Funktion gespeichert.Function code files are stored on Azure Files shares on the function's main storage account. Wenn Sie das Hauptspeicherkonto der Funktions-App löschen, werden die Funktionscodedateien gelöscht und können nicht wiederhergestellt werden.When you delete the main storage account of the function app, the function code files are deleted and cannot be recovered.

Hinweis

Bei Verwendung eines Blobtriggers in einem Verbrauchsplan kann es möglicherweise bis zu 10 Minuten dauern, bis neue Blobs verarbeitet werden.When you're using a blob trigger on a Consumption plan, there can be up to a 10-minute delay in processing new blobs. Diese Verzögerung tritt auf, nachdem eine Funktions-App in den Leerlauf gewechselt ist.This delay occurs when a function app has gone idle. Sobald die Funktions-App ausgeführt wird, werden die Blobs sofort verarbeitet.After the function app is running, blobs are processed immediately. Um diese Kaltstartverzögerung zu vermeiden, verwenden Sie den Premium-Plan oder den Event Grid-Trigger.To avoid this cold-start delay, use the Premium plan, or use the Event Grid trigger. Weitere Informationen finden Sie im Referenzartikel zur Blobtriggerbindung.For more information, see the blob trigger binding reference article.

LaufzeitskalierungRuntime scaling

Azure Functions verwendet die Komponente Skalierungscontroller, um die Rate der Ereignisse zu überwachen und zu bestimmen, ob eine horizontale Hoch- oder Herunterskalierung erforderlich ist.Azure Functions uses a component called the scale controller to monitor the rate of events and determine whether to scale out or scale in. Der Skalierungscontroller verwendet Heuristik für jeden Triggertyp.The scale controller uses heuristics for each trigger type. Bei Verwendung eines Triggers für Azure Queue Storage beispielsweise basieren die Skalen auf der Länge der Warteschlange und dem Alter der ältesten Nachricht in der Warteschlange.For example, when you're using an Azure Queue storage trigger, it scales based on the queue length and the age of the oldest queue message.

Die Skalierungseinheit ist die Funktionen-App.The unit of scale is the function app. Bei einer horizontalen Hochskalierung der Funktions-App werden zusätzliche Ressourcen zugeordnet, um mehrere Instanzen des Azure Functions-Hosts auszuführen.When the function app is scaled out, additional resources are allocated to run multiple instances of the Azure Functions host. Umgekehrt entfernt der Skalierungscontroller bei abnehmenden Computeanforderungen Instanzen des Functions-Hosts.Conversely, as compute demand is reduced, the scale controller removes function host instances. Die Anzahl der Instanzen wird schließlich zentral auf null herunterskaliert, wenn in einer Funktionen-App keine Funktionen ausgeführt werden.The number of instances is eventually scaled down to zero when no functions are running within a function app.

Skalierungscontroller: Überwachen von Ereignissen und Erstellen von Instanzen

Grundlegendes zum Verhalten von SkalierungenUnderstanding scaling behaviors

Die Skalierung variiert ausgehend von verschiedenen Faktoren, und die Skalierung ist je nach dem ausgewählten Auslöser und der Sprache unterschiedlich.Scaling can vary on a number of factors, and scale differently based on the trigger and language selected. Das System umfasst heute einige Aspekte der Skalierung:However there are a few aspects of scaling that exist in the system today:

  • Eine einzelne Funktions-App wird maximal auf 200 Instanzen hochskaliert.A single function app only scales up to a maximum of 200 instances. Eine einzelne Instanz kann mehrere Meldungen oder Anforderungen gleichzeitig verarbeiten, weshalb es keine Grenze für die Anzahl gleichzeitiger Ausführungen gibt.A single instance may process more than one message or request at a time though, so there isn't a set limit on number of concurrent executions.
  • Bei HTTP-Triggern werden neue Instanzen höchstens einmal pro Sekunde zugeordnet.For HTTP triggers, new instances will only be allocated at most once every 1 second.
  • Bei Nicht-HTTP-Triggern werden neue Instanzen höchstens einmal alle 30 Sekunden zugeordnet.For non-HTTP triggers, new instances will only be allocated at most once every 30 seconds.

Für verschiedene Auslöser gelten unter Umständen unterschiedliche Grenzwerte für die Skalierung sowie die folgenden Angaben:Different triggers may also have different scaling limits as well as documented below:

Bewährte Methoden und Muster für skalierbare AppsBest practices and patterns for scalable apps

Es gibt viele Aspekte einer Funktions-App, die sich auf die Skalierung auswirken. Dazu zählen beispielsweise die Hostkonfiguration, der Runtimespeicherbedarf und die Ressourceneffizienz.There are many aspects of a function app that will impact how well it will scale, including host configuration, runtime footprint, and resource efficiency. Weitere Informationen finden Sie im Abschnitt zur Skalierbarkeit im Artikel zum Thema Leistung.For more information, see the scalability section of the performance considerations article. Sie sollten auch das Verhalten von Verbindungen beim Skalieren Ihrer Funktions-App beachten.You should also be aware of how connections behave as your function app scales. Weitere Informationen finden Sie unter How to manage connections in Azure Functions (Verwalten von Verbindungen in Azure Functions).For more information, see How to manage connections in Azure Functions.

AbrechnungsmodellBilling model

Die Abrechnung des Verbrauchsplans wird detailliert auf der [Preisseite für Azure Functions] beschrieben.Billing for the Consumption plan is described in detail on the [Azure Functions pricing page]. Der Verbrauch wird auf Ebene der Funktions-App zusammengefasst, wobei nur die Zeit gezählt wird, für die der Funktionscode ausführt wurde.Usage is aggregated at the function app level and counts only the time that function code is executed. Folgende Einheiten werden für die Abrechnung verwendet:The following are units for billing:

  • Ressourcenverbrauch in Gigabytesekunden (GB-s)Resource consumption in gigabyte-seconds (GB-s). berechnet als Kombination aus Arbeitsspeichergröße und Ausführungsdauer für alle Funktionen in einer Funktions-App.Computed as a combination of memory size and execution time for all functions within a function app.
  • AusführungenExecutions. werden bei jeder Ausführung einer Funktion als Antwort auf einen Ereignisauslöser gezählt.Counted each time a function is executed in response to an event trigger.

Nützliche Fragen und Informationen zum Verständnis Ihrer Verbrauchsrechnung finden Sie in den häufig gestellten Fragen zur Abrechnung.Useful queries and information on how to understand your consumption bill can be found on the billing FAQ.