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-Dienstlö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 die Situation folgende Auswirkungen haben:

  • erhöhte Latenz bei der Kommunikation zwischen den Ressourcen
  • Monetäre Gebühren für ausgehende Datenübertragungen über Regionen hinweg, wie auf der Azure-Preisseite erwähnt

Colocation eignet sich am besten für Azure-Ressourcen, die eine Lösung erstellen. Stellen Sie beim Erstellen von Ressourcen sicher, dass sie sich in derselben Azure-Region befinden, es sei denn, Sie haben bestimmte Geschäftliche oder Entwurfsgründe dafür, dass sie nicht vorhanden sind. Sie können eine App Service-App in dieselbe Region wie Ihre Datenbank verschieben, indem Sie das Feature zum Klonen des App-Diensts verwenden, das in Premium App Service-Plänen verfügbar ist.

Anheften von Zertifikaten

Das Anheften von Zertifikaten ist eine Praxis, in der eine Anwendung nur eine bestimmte Liste zulässiger Zertifizierungsstellen (CAs), öffentlicher Schlüssel, Fingerabdrucke oder teile der Zertifikathierarchie zulässt.

Anwendungen sollten niemals eine feste Abhängigkeit haben oder an das Standard-WILD-Zertifikat anheften Karte (*.azurewebsites.net) TLS-Zertifikat. App Service ist eine Plattform als Dienst (PaaS), sodass dieses Zertifikat jederzeit gedreht werden kann. Wenn der Dienst das Standard-Wild dreht Karte TLS-Zertifikat, werden anheftete Anwendungen unterbrochen und die Konnektivität für Anwendungen unterbrochen, die mit einer bestimmten Gruppe von Zertifikatattributen hartcodiert sind. Die Periodizität, mit der das Zertifikat gedreht wird, ist auch nicht garantiert, da sich die Drehfrequenz jederzeit ändern kann.

Anwendungen, die auf der Anheftung von Zertifikaten basieren, sollten auch keine feste Abhängigkeit von einem vom App-Dienst verwalteten Zertifikat haben. Verwaltete Zertifikate des App-Diensts können jederzeit gedreht werden, was zu ähnlichen Problemen für Anwendungen führt, die auf stabilen Zertifikateigenschaften basieren. Es ist eine bewährte Methode, ein benutzerdefiniertes TLS-Zertifikat für Anwendungen bereitzustellen, die auf Zertifikatanheftung basieren.

Wenn Ihre Anwendung auf das Verhalten des Anheftens von Zertifikaten angewiesen sein muss, empfehlen wir, einer Web-App eine benutzerdefinierte Do Standard hinzuzufügen und ein benutzerdefiniertes TLS-Zertifikat für die Aktion bereitzustellen Standard. Die Anwendung kann dann auf das benutzerdefinierte TLS-Zertifikat für die Zertifikatanheftung zurückgreifen.

Arbeitsspeicherressourcen

Wenn Überwachungs- oder Dienstempfehlungen darauf hinweisen, dass eine App mehr Arbeitsspeicher belegt als erwartet, sollten Sie das Feature für die automatische Heilung des App-Diensts berücksichtigen. Sie können die automatische Heilung mithilfe von "web.config" konfigurieren.

Eine der Optionen für das Feature für die automatische Heilung besteht darin, benutzerdefinierte Aktionen basierend auf einem Speicherschwellenwert auszuführen. Aktionen reichen von E-Mail-Benachrichtigungen bis hin zur Untersuchung über Speicherabbild bis hin zur Vor-Ort-Entschärfung durch Recycling des Arbeitsprozesses.

CPU-Ressourcen

Wenn Überwachungs- oder Dienstempfehlungen darauf hinweisen, dass eine App mehr CPU verbraucht als erwartet oder wiederholte CPU-Spitzen aufweist, erwägen Sie das Skalieren oder Skalieren des App Service-Plans. Wenn Die Anwendung zustandsbehaftet ist, ist die Skalierung nach oben die einzige Option. Wenn Ihre Anwendung zustandslos ist, bietet ihnen die Skalierung mehr Flexibilität und ein höheres Skalierungspotenzial.

Weitere Informationen zu App Service-Skalierungs- und Autocaling-Optionen finden Sie unter Skalieren einer App in Azure-App Dienst.

Socketressourcen

Ein häufiger Grund für die Erschöpfung ausgehender TCP-Verbindungen ist die Verwendung von Clientbibliotheken, die keine TCP-Verbindungen wiederverwenden oder kein Protokoll auf höherer Ebene wie HTTP-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 oder darauf zugegriffen werden, 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 an 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 der Umgang mit HTTP-Keep-Alive wichtig. Sie können zur Vereinfachung in Ihrem Code das agentkeepalive-npm-Paket verwenden.

Die http-Antwort sollte immer behandelt werden, auch wenn im Handler ggf. nichts unternommen wird. Wenn Sie die Antwort nicht ordnungsgemäß behandeln, bleibt Die Anwendung schließlich hängen, da keine weiteren Sockets verfügbar sind.

Hier ist ein Beispiel für die Behandlung der Antwort, wenn Sie mit dem http Paket 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, PM2 zum Starten mehrerer Node.js-Prozesse zum Ausführen Ihrer Anwendung zu verwenden. 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 eines Ausfalls des Zugriffs auf eine dieser Ressourcen ist ein konsistenter Sicherungsfehler.

Die beiden häufigsten Gründe, warum die App-Sicherung fehlschlägt, 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 neuesten Ergebnisse, um zu verstehen, welche Art von Fehler auftritt. Überprüfen und aktualisieren Sie bei Speicherzugriffsfehlern die Speichereinstellungen in Ihrer Sicherungskonfiguration. Überprüfen und aktualisieren Sie ihre Verbindungszeichenfolge als Teil der App-Einstellungen, um Datenbankzugriffsfehler zu erhalten und zu aktualisieren. 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 Dienst.

Node.js-Apps

Die Azure-App Dienststandardkonfiguration für Node.js-Apps ist für die Anforderungen der am häufigsten verwendeten Apps geeignet. Wenn Sie die Standardkonfiguration für Ihre Node.js-App personalisieren möchten, um die Leistung zu verbessern oder die Ressourcenauslastung für CPU-, Arbeitsspeicher- oder Netzwerkressourcen zu optimieren, lesen Sie bewährte Methoden und Anleitung zur Problembehandlung für Node-Anwendungen auf Azure-App Dienst. 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 gängige Vorgehensweise bei IoT-Geräten ist das Anheften von Zertifikaten. Um unvorhergesehene Ausfallzeiten aufgrund von Änderungen der verwalteten Zertifikate des Diensts zu vermeiden, sollten Sie keine Zertifikate an das Standardzertifikat *.azurewebsites.net oder an ein vom App Service verwaltetes Zertifikat anheften. Wenn Ihr System auf das Verhalten des Anheftens von Zertifikaten angewiesen sein muss, empfehlen wir, einer Web-App eine benutzerdefinierte Do Standard hinzuzufügen und ein benutzerdefiniertes TLS-Zertifikat für die Aktion bereitzustellen Standard. Die Anwendung kann dann auf das benutzerdefinierte TLS-Zertifikat für die Zertifikatanheftung zurückgreifen. Weitere Informationen finden Sie im Abschnitt zum Anheften von Zertifikaten in diesem Artikel.

Um die Resilienz in Ihrer Umgebung zu erhöhen, verlassen Sie sich nicht auf einen einzelnen Endpunkt für alle Ihre Geräte. Hosten Sie Ihre Web-Apps in mindestens zwei Regionen, um einen einzelnen Fehlerpunkt zu vermeiden, und stellen Sie bereit, den Datenverkehr zu überschlagen.

In App Service können Sie identische benutzerdefinierte Do Standard s zu mehreren Web-Apps hinzufügen, solange diese Web-Apps in verschiedenen Regionen gehostet werden. Diese Funktion stellt sicher, 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 eine hohe Verfügbarkeit für Ihre Web-Apps sicherzustellen. Weitere Informationen finden Sie in der Schnellstartanleitung: Erstellen einer Front Door-Instanz für eine hochveröffentliche globale Webanwendung oder Steuern von Azure-App Dienstdatenverkehr mit Azure Traffic Manager.

Nächste Schritte

Verwenden Sie den App Service-Diagnose, um umsetzbare bewährte Methoden zu erhalten, die für Ihre Ressource spezifisch sind:

  1. Wechseln Sie in der Azure-Portal zu Ihrer Web-App.
  2. Öffnen Sie app Service Diagnose, indem Sie im linken Bereich "Diagnostizieren" auswählen und Probleme lösen.
  3. Wählen Sie die Kachel " Bewährte Methoden " aus.
  4. Wählen Sie bewährte Methoden für Verfügbarkeit und Leistung oder bewährte Methoden für optimale Konfiguration aus, um den aktuellen Zustand Ihrer App in Bezug auf diese bewährten Methoden anzuzeigen.

Sie können diesen Link auch verwenden, um 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.