Freigeben über


Automatische Skalierung in Azure App Service

Hinweis

Die automatische Skalierung ist für alle App-Typen verfügbar: Windows und Linux (als Code und Container bereitstellen). Die automatische Skalierung wird für den Datenverkehr von Bereitstellungsslots nicht unterstützt.

Die automatische Skalierung ist eine Option für horizontales Skalieren, die automatisch Skalierungsentscheidungen für Ihre Web-Apps und App Service-Pläne verarbeitet. Sie unterscheidet sich von der automatischen Azure-Skalierung, mit der Sie Skalierungsregeln basierend auf Zeitplänen und Ressourcen definieren können.

Mit der automatischen Skalierung können Sie Skalierungseinstellungen anpassen, um die Leistung Ihrer App zu verbessern und Kaltstartprobleme zu vermeiden. Die Plattform wärmt Instanzen vor, die beim Aufskalieren als Puffer fungieren, sodass reibungslose Leistungsübergänge gewährleistet werden. Jede Instanz wird Ihnen pro Sekunde in Rechnung gestellt, einschließlich vorgewärmter Instanzen.

In der folgenden Tabelle werden die Optionen für horizontales und horizontales Hochskalieren verglichen, die in App Service verfügbar sind:

  Manuell Automatische Skalierung Autoskalierung
Verfügbare Tarife Basic und höher Standard und höher Premium V2 (P1V2, P2V2 und P3V2) Tarife. Premium V3-Tarife (P0V3, P1V3, P2V3, P3V3, P1MV3, P2MV3, P3MV3, P4MV3 und P5MV3).
Regelbasierte Skalierung Nein Ja Nein, die Plattform verwaltet das horizontale und horizontale Hochskalieren basierend auf dem HTTP-Datenverkehr.
Zeitplanbasierte Skalierung Nein Ja Nein
Immer bereite Instanzen Nein, Ihre Web-App wird mit der Anzahl manuell skalierter Instanzen ausgeführt. Nein, Ihre Web-App wird auf anderen Instanzen ausgeführt, die während des Vorgangs für die horizontale Skalierung verfügbar sind, basierend auf dem Schwellenwert, der für Regeln für die automatische Skalierung definiert ist. Ja (mindestens 1)
Vorgewärmte Instanzen Nein Nein Ja (standardmäßig 1)
Maximaler Wert pro App Nein Nein Ja

So funktioniert die automatische Skalierung

Sie aktivieren die automatische Skalierung für einen App Service-Plan und konfigurieren einen Bereich von Instanzen für jede der Web-Apps. Wenn Ihre Web-App HTTP-Datenverkehr empfängt, überwacht App Service die Auslastung und fügt Instanzen hinzu. Ressourcen können freigegeben werden, wenn mehrere Web-Apps innerhalb eines App Service-Plans gleichzeitig horizontal hochskaliert werden müssen.

Im Folgenden finden Sie einige Szenarien, in denen Sie automatisch aufskalieren sollten:

  • Sie möchten keine Regeln für die Autoskalierung basierend auf Ressourcenmetriken einrichten.
  • Sie möchten, dass Ihre Web-Apps innerhalb desselben App Service-Plans unterschiedlich und unabhängig voneinander skaliert werden.
  • Ihre Web-App ist mit einer Datenbank oder einem Legacysystem verbunden, das möglicherweise nicht so schnell skaliert wird wie die Web-App. Mit der automatischen Skalierung können Sie die maximale Anzahl von Instanzen festlegen, auf die Ihr App Service-Plan skaliert werden kann. Diese Einstellung hilft der Web-App, das Back-End nicht zu überlasten.

Aktivieren der automatischen Skalierung

Die Einstellung "Maximale Burst " stellt die höchste Anzahl von Instanzen dar, auf die Ihr App Service-Plan basierend auf eingehenden HTTP-Anforderungen erhöht werden kann. Für Premium v2- und v3-Pläne können Sie bis zu 30 Instanzen angeben. Die maximale Burstanzahl muss gleich oder größer als die Anzahl der Worker sein, die für den App Service-Plan angegeben ist.

Um die automatische Skalierung zu aktivieren, gehen Sie zum linken Menü der Web-App. Wählen Sie unter Einstellungen die Option Horizontales Skalieren (App Service-Plan) aus. Wählen Sie Automatisch aus, aktualisieren Sie den Wert für den Maximalen Burst, und wählen Sie die Schaltfläche Speichern aus.

Screenshot der automatischen Skalierung im Azure-Portal

Festlegen der Mindestanzahl von Web-App-Instanzen

Die Einstellung Immer bereite Instanzen auf App-Ebene gibt die Mindestanzahl von Instanzen an. Wenn die Auslastung die unter Immer bereite Instanzen festgelegte Mindestanzahl überschreitet, werden zusätzliche Instanzen hinzugefügt, bis zum angegebenen maximalen Burst-Wert für den App Service-Plan.

Um die Mindestanzahl von Web-App-Instanzen festzulegen, wechseln Sie zum linken Menü der Web-App, und wählen Sie Horizontales Skalieren (App Service-Plan) aus. Aktualisieren Sie den Wert Jederzeit bereite Instanzen, und wählen Sie die Schaltfläche Speichern aus.

Screenshot von Always-Ready-Instanzen.

Festlegen der maximalen Anzahl von Web-App-Instanzen

Der Wert für den maximalen Skalierungsgrenzwert legt die maximale Anzahl von Instanzen fest, auf die eine Web-App skaliert werden kann. Der maximale Skalierungsgrenzwert ist hilfreich, wenn eine Downstreamkomponente wie eine Datenbank einen begrenzten Durchsatz aufweist. Der maximale Wert pro App kann zwischen 1 und dem maximalen Burst-Wert liegen.

Um die maximale Anzahl von Web-App-Instanzen festzulegen, wechseln Sie zum linken Menü der Web-App, und wählen Sie Horizontales Skalieren (App Service-Plan) aus. Wählen Sie Grenzwert für Aufskalieren erzwingen aus, aktualisieren Sie das Maximale Skalierungslimit, und wählen Sie die Schaltfläche Speichern aus.

Screenshot der maximalen Skalierungsgrenze.

Aktualisieren von vorgewärmten Instanzen

Die Einstellung für vorgewärmte Instanzen stellt erwärmte Instanzen als Puffer während HTTP-Skalierungs- und Aktivierungsereignissen bereit. Vorgewärmte Instanzen setzen die Pufferung fort, bis der Grenzwert für maximale horizontale Skalierung erreicht wird. Die standardmäßige Anzahl der vorgewärmten Instanzen beträgt 1 , und in den meisten Szenarien sollte dieser Wert bei 1 bleiben.

Sie können die Einstellung für die vorgewärmte Instanz im Portal nicht ändern. Sie müssen stattdessen die Azure CLI verwenden.

Deaktivieren der automatischen Skalierung

Um die automatische Skalierung zu deaktivieren, wechseln Sie zum linken Menü der Web-App, und wählen Sie Horizontales Skalieren (App Service-Plan) aus. Wählen Sie Manuell und dann die Schaltfläche Speichern aus.

Screenshot der manuellen Skalierung.

Häufig gestellte Fragen

Unterstützt die automatische Skalierung Azure Functions-Apps?

Nein, Sie können nur Azure App Service-Web-Apps im App Service-Plan haben, in dem Sie die automatische Skalierung aktivieren möchten. Für Azure Functions-Apps wird empfohlen, stattdessen den Azure Functions Premium-Plan zu verwenden.

Achtung

Die automatische Skalierung ist deaktiviert, wenn sich App Service-Web-Apps und Azure Functions-Apps im selben App Service-Plan befinden.

Wie funktioniert die automatische Skalierung hinter den Kulissen?

Anwendungen, die automatisch skaliert werden, werden kontinuierlich überwacht, wobei die Bewertung des Workerzustands mindestens einmal alle paar Sekunden erfolgt. Wenn das System eine erhöhte Auslastung der Anwendung erkennt, werden Integritätsprüfungen häufiger. Wenn sich der Zustand des Workers verschlechtert und die Anforderungen langsamer werden, werden andere Instanzen angefordert. Die Geschwindigkeit, mit der Instanzen hinzugefügt werden, variiert je nach Lademuster und Startzeit der individuellen Anwendung. Bei Anwendungen mit kurzen Startzeiten und zeitweiligen Lastspitzen wird möglicherweise alle paar Sekunden bis zu einer Minute ein virtueller Computer hinzugefügt.

Sobald die Last nachlässt, initiiert die Plattform eine Überprüfung auf potenzielles horizontales Herunterskalieren. Dieser Vorgang beginnt in der Regel etwa 5-10 Minuten, nachdem die Last nicht mehr zunimmt. Während des horizontalen Herunterskalierens werden Instanzen alle paar Sekunden bis hin zu einer Minute mit einer maximalen Rate entfernt.

Wenn mehrere Webanwendungen innerhalb desselben App Service-Plans bereitgestellt werden, versucht die Plattform, Ressourcen auf verfügbare Instanzen zuzuweisen. Diese Zuordnung basiert auf der Auslastung jeder einzelnen Webanwendung.

Wie werden vorgewärmte Instanzen in Rechnung gestellt?

Um zu verstehen, wie vorgewärmte Instanzen in Rechnung gestellt werden, sollten Sie dieses Szenario in Betracht ziehen: Angenommen, Ihre Web-App verfügt über fünf Instanzen, die immer bereit sind, zusammen mit einer vorgewärmten Instanz, die standardmäßig festgelegt ist.

Wenn Ihre Web-App im Leerlauf ist und keine HTTP-Anforderungen empfängt, wird sie mit den fünf immer einsatzbereiten Instanzen ausgeführt. Während dieser Zeit wird Ihnen keine vorgewärmte Instanz in Rechnung gestellt, da die jederzeit bereiten Instanzen nicht verwendet werden und keine vorgewärmte Instanz zugeordnet ist.

Sobald Ihre Web-App jedoch HTTP-Anforderungen empfängt und die fünf immer bereiteten Instanzen aktiv werden, wird eine vorab aufgewärmte Instanz zugeordnet. Die Abrechnung beginnt an dieser Stelle.

Wenn die Rate der HTTP-Anforderungen weiter zunimmt und App Service beschließt, über die ersten fünf Instanzen hinaus zu skalieren, beginnt die Verwendung der vorgewärmten Instanz. Dies bedeutet, dass bei sechs aktiven Instanzen sofort eine siebte Instanz bereitgestellt wird, um den vorgewärmten Puffer zu füllen.

Dieser Prozess aus Skalierung und Vorabaufwärmung wird fortgesetzt, bis die maximale Anzahl von Instanzen für die App erreicht ist. Es muss beachtet werden, dass keine Instanzen über die maximale Anzahl der Instanzen hinaus vorgewärmt oder aktiviert werden.

AppServiceHTTPLogs Warum gibt es Protokolleinträge, die mit dem Status 404 vergleichbar sind/admin/host/ping?

Die automatische Skalierung von App Service überprüft den /admin/host/ping Endpunkt regelmäßig zusammen mit anderen Mechanismen zur Integritätsprüfung, die der Plattform inhärent sind. Gelegentlich können diese Pings aufgrund vorhandener Plattformkonfigurationen 404-Fehler zurückgeben. Beachten Sie jedoch, dass sich diese 404-Fehler nicht auf die Verfügbarkeit oder Skalierungsleistung Ihrer App auswirken dürfen.

Wenn Ihre Web-App den Status 5xx zurückgibt, können diese Endpunktpings zu zeitweiligen Neustarts führen, obwohl dieses Szenario ungewöhnlich ist. Stellen Sie sicher, dass Ihre Web-App an diesem Endpunkt keinen 5xx-Status zurückgibt. Diese Ping-Endpunkte können nicht angepasst werden.

Wie kann ich die Anzahl der horizontal skalierten Instanzen während des Ereignisses für die automatische Skalierung nachverfolgen?

Die AutomaticScalingInstanceCount Metrik meldet die Anzahl der virtuellen Maschinen, auf denen die App ausgeführt wird, einschließlich der vorgewärmten Instanz, wenn sie bereitgestellt wird. Diese Metrik kann auch verwendet werden, um die maximale Anzahl von Instanzen nachzuverfolgen, die Ihre Web-App während eines Ereignisses für die automatische Skalierung horizontal hochskaliert hat. Diese Metrik ist nur für Apps verfügbar, für die die automatische Skalierung aktiviert ist.

Wie wirkt sich die ARR-Affinität auf die automatische Skalierung aus?

Azure App Service verwendet Cookies für das Routing von Anwendungsanforderungen, die als ARR Affinity bezeichnet werden. ARR Affinity-Cookies beschränken die Skalierung, da sie Anforderungen nur an Server senden, die mit dem Cookie verknüpft sind, und nicht an jede verfügbare Instanz. Für Apps, die den Store-Zustand speichern, empfiehlt es sich, eine Skalierung durchzuführen (Ressourcen auf einer einzelnen Instanz erhöhen). Für zustandslose Apps bietet das Skalieren (Hinzufügen weiterer Instanzen) mehr Flexibilität und Skalierbarkeit. ARR Affinity-Cookies sind standardmäßig in App Service aktiviert. Abhängig von Ihren Anwendungsanforderungen können Sie ARR-Affinitätscookies deaktivieren, wenn Sie die automatische Skalierung verwenden.

Um ARR Affinity-Cookies zu deaktivieren: Wählen Sie Ihre App Service-App aus, und wählen Sie unter EinstellungenKonfiguration aus. Wählen Sie anschließend die Registerkarte Allgemeine Einstellungen . Wählen Sie unter Sitzungsaffinitätdie Option Aus und dann die Schaltfläche Speichern aus.