Bewährte Methoden für Azure App Service
In diesem Artikel werden die empfohlenen Methoden für die Verwendung von Azure App Servicezusammengefasst.
Zusammenstellung
Eine Azure App Service-Lösung besteht aus einer Web-App und einem Datenbank- oder Speicherkonto zum Speichern von Inhalten oder Daten. Wenn sich diese Ressourcen in verschiedenen Regionen befinden, kann dies folgende Auswirkungen haben:
- erhöhte Latenz bei der Kommunikation zwischen den Ressourcen
- Kosten für ausgehende, regionsübergreifende Datenübertragung, wie in der Azure-Preisübersicht angegeben
Colocation eignet sich am besten für Azure-Ressourcen, die eine Lösung erstellen. Stellen Sie beim Erstellen von Ressourcen sicher, dass sich diese in derselben Azure-Region befinden, es sei denn, es sprechen geschäftliche oder entwurfstechnische Gründe dagegen. Mithilfe der App Service-Klonfunktion, die für Apps in Premium App Service-Plänen verfügbar ist, können Sie eine App Service-App in dieselbe Region wie Ihre Datenbank verschieben.
Anheften von Zertifikaten
Das Anheften von Zertifikaten ist eine Praxis, bei der eine Anwendung nur eine bestimmte Liste zulässiger Zertifizierungsstellen (CAs), öffentlicher Schlüssel, Fingerabdrücke oder einen Teil der Zertifikathierarchie zulässt.
Anwendungen sollten niemals über eine feste Abhängigkeit verfügen oder an das standardmäßige TLS-Platzhalterzertifikat (*.azurewebsites.net
) anheften. App Service ist eine Platform-as-a-Service (PaaS)-Instanz, sodass dieses Zertifikat jederzeit rotiert werden kann. Falls der Dienst das TLS-Standardplatzhalterzertifikat rotiert, werden Anwendungen mit angeheftetem Zertifikat beschädigt und unterbrechen die Verbindung für Anwendungen, die mit einem bestimmten Satz von Zertifikatattributen hartcodiert sind. Die Periodizität, mit der das TLS-Zertifikat rotiert wird, ist ebenfalls nicht garantiert, da sich die Rotationsfrequenz jederzeit ändern kann.
Anwendungen, die auf der Anheftung von Zertifikaten basieren, sollten auch keine feste Abhängigkeit von einem von App Service verwalteten Zertifikat haben. Von App Service verwaltete Zertifikate könnten jederzeit rotiert werden, was zu ähnlichen Problemen für Anwendungen führt, die auf stabilen Zertifikateigenschaften basieren. Es empfiehlt sich, ein benutzerdefiniertes TLS-Zertifikat für Anwendungen bereitzustellen, die auf dem Anheften von Zertifikaten basieren.
Wenn Ihre Anwendung das Verhalten des Anheftens von Zertifikaten verwenden muss, empfehlen wir, dass Sie einer Web-App eine benutzerdefinierte Domäne hinzufügen und ein benutzerdefiniertes TLS-Zertifikat für die Domäne bereitstellen. Die Anwendung kann dann auf das benutzerdefinierte TLS-Zertifikat für das Anheften von Zertifikaten zurückgreifen.
Arbeitsspeicherressourcen
Wenn die Überwachung oder Dienstempfehlungen darauf hinweisen, dass eine App mehr Arbeitsspeicher belegt als erwartet, sollten Sie die Selbstreparaturfunktion von App Service in Betracht ziehen. Sie können die Selbstreparaturfunktion mithilfe von web.config konfigurieren.
Eine der Optionen der Selbstreparaturfunktion besteht darin, benutzerdefinierte Aktionen basierend auf einem Speicherschwellenwert zu ergreifen. Die Aktionen reichen von E-Mail-Benachrichtigungen über eine Untersuchung mittels Speicherabbild bis hin zur Behebung vor Ort durch Recycling des Arbeitsprozesses.
CPU-Ressourcen
Wenn die Überwachung oder Dienstempfehlungen darauf hinweisen, dass eine App mehr CPU verbraucht als erwartet oder wiederholt CPU-Spitzen zu verzeichnen sind, sollten Sie in Betracht ziehen, den App Service-Plan hochzuskalieren oder dezentral skalieren. Wenn die Anwendung zustandsbehaftet ist, ist das Hochskalieren die einzige Option. Wenn Ihre Anwendung zustandslos ist, bietet ihnen die Skalierung mehr Flexibilität und ein höheres Skalierungspotenzial.
Weitere Informationen zur Skalierung von App Service und Optionen zur automatischen Skalierung finden Sie unter Hochskalieren einer Web-App in Azure App Service.
Socket-Ressourcen
Eine häufige Ursache für das Erschöpfen ausgehender TCP-Verbindungen ist die Verwendung von Clientbibliotheken, die keine TCP-Verbindungen wiederverwenden oder keine übergeordneten Protokolle wie HTTP von Keep-Alive verwenden.
Überprüfen Sie die Dokumentation für jede Bibliothek, auf die die Apps in Ihrem App Service-Plan verweisen. Stellen Sie sicher, dass die Bibliotheken in Ihrem Code konfiguriert sind oder auf sie zugegriffen wird, um ausgehende Verbindungen effizient wiederzuverwenden. Befolgen Sie auch den Leitfaden zur Bibliotheksdokumentation für eine ordnungsgemäße Erstellung und Freigabe oder Bereinigung, um Verbindungsverluste zu vermeiden. Während solche Untersuchungen der Clientbibliotheken ausgeführt werden, können Sie die Auswirkungen verringern, indem Sie auf mehrere Instanzen skalieren.
Node.js und ausgehende HTTP-Anforderungen
Wenn Sie mit Node.js und vielen ausgehenden HTTP-Anforderungen arbeiten, ist eine Behandlung mit HTTP-Keep-Alive wichtig. Sie können zur Vereinfachung in Ihrem Code das npm
-Paket agentkeepalive verwenden.
Die http
-Antwort sollte immer behandelt werden, auch wenn im Handler ggf. nichts unternommen wird. Wird die Antwort nicht ordnungsgemäß verarbeitet, bleibt Ihre Anwendung letztendlich hängen, da keine Sockets mehr verfügbar sind.
Hier ist ein Beispiel für die Behandlung der Antwort, wenn Sie mit dem Paket http
oder https
arbeiten:
const request = https.request(options, function(response) {
response.on('data', function() { /* do nothing */ });
});
Wenn Sie Ihre App Service-App auf einem Linux-Computer mit mehreren Kernen ausführen, empfiehlt es sich, für die Ausführung Ihrer Anwendung mit PM2 mehrere Node.js-Prozesse zu starten. Dazu können Sie einen Startbefehl für Ihren Container angeben.
Verwenden Sie beispielsweise diesen Befehl, um vier Instanzen zu starten:
pm2 start /home/site/wwwroot/app.js --no-daemon -i 4
App-Sicherung
Sicherungen erfolgen meist gemäß einem Zeitplan und erfordern Zugriff auf Speicher (für die Ausgabe der gesicherten Dateien) und Datenbanken (zum Kopieren und Lesen von Inhalten, die in die Sicherung einbezogen werden sollen). Das Ergebnis des Fehlens eines Zugriff auf diese Ressourcen ist ein durchgängiger Ausfall von Sicherungen.
Die zwei häufigsten Gründe, warum eine App-Sicherung misslingt, sind ungültige Speichereinstellungen und eine ungültige Datenbankkonfiguration. Diese Fehler treten in der Regel nach Änderungen an Speicher- oder Datenbankressourcen oder nach Änderungen an Anmeldeinformationen für den Zugriff auf diese Ressourcen auf. Beispielsweise können Anmeldeinformationen für die Datenbank aktualisiert werden, die Sie in den Sicherungseinstellungen ausgewählt haben.
Wenn Sicherungsfehler auftreten, überprüfen Sie die letzten Ergebnisse, um herauszufinden, welche Art von Fehler auftritt. Überprüfen und ändern Sie bei Speicherzugriffsfehlern die Speichereinstellungen in Ihrer Sicherungskonfiguration. Überprüfen und aktualisieren Sie bei Datenbankzugriffsfehlern ihre Verbindungszeichenfolgen als Teil der App-Einstellungen. Fahren Sie dann mit der Aktualisierung der Sicherungskonfiguration fort, um die erforderlichen Datenbanken ordnungsgemäß einzuschließen.
Weitere Informationen zu App-Sicherungen finden Sie unter Sichern und Wiederherstellen Ihrer App in Azure App Service.
Node.js-Apps
Die Azure App Service-Standardkonfiguration für Node.js-Apps soll den Bedürfnissen der am häufigsten verwendeten Apps am besten entsprechen. Wenn Sie die Standardkonfiguration für Ihre Node.js-App personalisieren möchten, um die Leistung zu verbessern oder den Ressourceneinsatz für CPU-, Speicher- oder Netzwerkressourcen zu optimieren, finden Sie weitere Informationen unter Bewährte Methoden und Problembehandlungsschritte für Node-Anwendungen bei Azure App Service. In diesem Artikel werden die iisnode-Einstellungen beschrieben, die Sie möglicherweise für Ihre Node.js-App konfigurieren müssen. Außerdem wird erläutert, wie Szenarien oder Probleme mit Ihrer App behoben werden.
IoT-Geräte
Sie können Ihre Umgebung verbessern, wenn Sie Internet of Things (IoT)-Geräte ausführen, die mit App Service verbunden sind.
Eine häufige Praxis bei IoT-Geräten ist das Anheften von Zertifikaten. Um unvorhersehbare Ausfallzeiten aufgrund von Änderungen an den verwalteten Zertifikaten des Diensts zu vermeiden, sollten Sie Zertifikate niemals an das *.azurewebsites.net
-Standardzertifikat oder an ein von App Service verwaltetes Zertifikat anheften. Wenn Ihr System das Verhalten des Anheftens von Zertifikaten verwenden muss, empfehlen wir, dass Sie einer Web-App eine benutzerdefinierte Domäne hinzufügen und ein benutzerdefiniertes TLS-Zertifikat für die Domäne bereitstellen. Die Anwendung kann dann auf das benutzerdefinierte TLS-Zertifikat für das Anheften von Zertifikaten zurückgreifen. Weitere Informationen finden Sie im Abschnitt Anheften von Zertifikaten in diesem Artikel.
Um die Resilienz in Ihrer Umgebung zu erhöhen, sollten Sie keinen einzelnen Endpunkt für alle Ihre Geräte verwenden. Hosten Sie Ihre Web-Apps in mindestens zwei Regionen, um einen Single Point of Failure zu vermeiden und auf Failoverdatenverkehr vorbereitet zu sein.
In App Service können Sie mehreren Web-Apps identische benutzerdefinierte Domänen hinzufügen, solange diese Web-Apps in verschiedenen Regionen gehostet werden. Durch diese Funktion wird sichergestellt, dass Sie, wenn Sie Zertifikate anheften müssen, auch an das von Ihnen bereitgestellte benutzerdefinierte TLS-Zertifikat anheften können.
Eine weitere Option ist die Verwendung eines Lastenausgleichs vor den Web-Apps, z. B. Azure Front Door oder Azure Traffic Manager, um Hochverfügbarkeit für Ihre Web-Apps sicherzustellen. Weitere Informationen finden Sie unter Schnellstart: Erstellen einer Front Door-Instanz für eine hochverfügbare globale Webanwendung oder Steuern des Azure App Service-Datenverkehrs mit Azure Traffic Manager.
Nächste Schritte
Verwenden Sie die App Service-Diagnose, um handlungsrelevante bewährte Methoden zu erhalten, die für Ihre Ressource spezifisch sind:
- Navigieren Sie im Azure-Portal zu Ihrer Web-App.
- Öffnen Sie die App Service-Diagnose, indem Sie im linken Bereich Diagnose und Probleme lösen auswählen.
- Wählen Sie die Kachel Bewährte Methoden aus.
- Wählen Sie Bewährte Methoden für Verfügbarkeit und Leistung oder Bewährte Methoden für die optimale Konfiguration aus, um den aktuellen Zustand Ihrer App in Bezug auf diese bewährten Methoden anzuzeigen.
Sie können auch den folgenden Link nutzen, um die App Service-Diagnose für Ihre Ressource direkt zu öffnen: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot
.