Empfohlene Methoden für Azure App ServiceBest Practices for Azure App Service

In diesem Artikel werden die empfohlenen Methoden für die Verwendung von Azure App Servicezusammengefasst.This article summarizes best practices for using Azure App Service.

ZusammenstellenColocation

Befinden sich Azure-Ressourcen, aus denen sich eine Lösung zusammensetzt (beispielsweise eine Web-App und eine Datenbank), in unterschiedlichen Regionen, kann sich dies folgendermaßen auswirken:When Azure resources composing a solution such as a web app and a database are located in different regions, it can have the following effects:

  • erhöhte Latenz bei der Kommunikation zwischen den RessourcenIncreased latency in communication between resources
  • Kosten für ausgehende, regionsübergreifende Datenübertragung, Details finden Sie in der Azure-PreisübersichtMonetary charges for outbound data transfer cross-region as noted on the Azure pricing page.

Das Zusammenstellen in derselben Region eignet sich am besten für Azure-Ressourcen, die zusammen eine Lösung bilden, wie z.B. eine Web-App und eine Datenbank oder ein Speicherkonto für die Inhalte oder Daten.Colocation in the same region is best for Azure resources composing a solution such as a web app and a database or storage account used to hold content or data. 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.When creating resources, make sure they are in the same Azure region unless you have specific business or design reason for them not to be. Mithilfe des App Service-Klonfeatures, das derzeit für Apps im App Service-Plan Premium verfügbar ist, können Sie eine App Service-App in dieselbe Region wie Ihre Datenbank verschieben.You can move an App Service app to the same region as your database by using the App Service cloning feature currently available for Premium App Service Plan apps.

Wenn Apps mehr Speicherplatz als erwartet belegenWhen apps consume more memory than expected

Wenn Sie durch Überwachung oder Dienstempfehlungen feststellen, dass eine App mehr Speicherplatz belegt als erwartet, sollten Sie das Selbstreparaturfeature von App Service in Betracht ziehen.When you notice an app consumes more memory than expected as indicated via monitoring or service recommendations, consider the App Service Auto-Healing feature. Eine der Optionen der Selbstreparaturfunktion besteht darin, benutzerdefinierte Aktionen basierend auf einem Speicherschwellenwert zu ergreifen.One of the options for the Auto-Healing feature is taking custom actions based on a memory threshold. Die Aktionen reichen von E-Mail-Benachrichtigungen über eine Untersuchung mittels Speicherabbild bis hin zur Behebung vor Ort durch Recycling des Arbeitsprozesses.Actions span the spectrum from email notifications to investigation via memory dump to on-the-spot mitigation by recycling the worker process. Die automatische Reparatur kann, wie in diesem Blogbeitrag für die App Service Support-Websiteerweiterungbeschrieben, über „web.config“ und eine benutzerfreundliche Benutzeroberfläche konfiguriert werden.Auto-healing can be configured via web.config and via a friendly user interface as described at in this blog post for the App Service Support Site Extension.

Wenn Apps mehr CPU-Leistung als erwartet beanspruchenWhen apps consume more CPU than expected

Wenn Sie feststellen, dass eine App mehr CPU-Leistung als erwartet beansprucht, oder wenn laut Überwachung oder Dienstempfehlungen wiederholt Rechenlastspitzen zu verzeichnen sind, sollten Sie in Betracht ziehen, den App Service-Plan zentral oder horizontal hochzuskalieren.When you notice an app consumes more CPU than expected or experiences repeated CPU spikes as indicated via monitoring or service recommendations, consider scaling up or scaling out the App Service plan. Bei einer zustandsbehafteten Anwendung ist eine zentrale Hochskalierung die einzige Option. Wenn Ihre Anwendung jedoch zustandslos ist, erreichen Sie mit einer horizontalen Hochskalierung mehr Flexibilität und ein höheres Skalierungspotenzial.If your application is stateful, scaling up is the only option, while if your application is stateless, scaling out gives you more flexibility and higher scale potential.

Weitere Informationen zu „zustandsbehafteten“ und „zustandslosen“ Anwendungen bietet das Video über das Planen einer skalierbaren End-to-End-Anwendung mit mehreren Ebenen in Azure App Service.For more information about “stateful” vs “stateless” applications you can watch this video: Planning a Scalable End-to-End Multi-Tier Application on Azure App Service. Weitere Informationen zur Skalierung von App Service und Optionen zur automatischen Skalierung finden Sie unter Skalieren einer Web-App in Azure App Service.For more information about App Service scaling and autoscaling options, see Scale a Web App in Azure App Service.

Wenn Socketressourcen erschöpft sindWhen socket resources are exhausted

Eine häufige Ursache für das Erschöpfen ausgehender TCP-Verbindungen ist die Verwendung von Clientbibliotheken, die nicht zur Wiederverwendung von TCP-Verbindungen implementiert wurden, oder im Fall eines übergeordneten Protokolls wie HTTP die fehlende Nutzung von Keep-Alive.A common reason for exhausting outbound TCP connections is the use of client libraries, which are not implemented to reuse TCP connections, or when a higher-level protocol such as HTTP - Keep-Alive is not used. Informieren Sie sich in den Dokumentationen der einzelnen Bibliotheken, auf die von den Apps in Ihrem App Service-Plan verwiesen wird, ob sie konfiguriert sind oder in Ihrem Code darauf zugegriffen wird, um so eine effiziente Wiederverwendung ausgehender Verbindungen zu gewährleisten.Review the documentation for each of the libraries referenced by the apps in your App Service Plan to ensure they are configured or accessed in your code for efficient reuse of outbound connections. Befolgen Sie auch den Leitfaden zur Bibliotheksdokumentation für eine ordnungsgemäße Erstellung und Freigabe oder Bereinigung, um Verbindungsverluste zu vermeiden.Also follow the library documentation guidance for proper creation and release or cleanup to avoid leaking connections. Während diese Clientbibliotheksuntersuchungen ausgeführt werden, können die Auswirkungen durch ein horizontales Hochskalieren auf mehrere Instanzen verringert werden.While such client libraries investigations are in progress, impact may be mitigated by scaling out to multiple instances.

Node.js und ausgehende HTTP-AnforderungenNode.js and outgoing http requests

Bei Verwendung von Node.js und zahlreichen ausgehenden HTTP-Anforderungen ist eine Behandlung von HTTP-Keep-Alive wichtig.When working with Node.js and many outgoing http requests, dealing with HTTP - Keep-Alive is important. Sie können zur Vereinfachung in Ihrem Code das agentkeepalive-npm-Paket verwenden.You can use the agentkeepalive npm package to make it easier in your code.

Die http-Antwort sollte immer behandelt werden, auch wenn im Handler ggf. nichts unternommen wird.Always handle the http response, even if you do nothing in the handler. Wird die Antwort nicht ordnungsgemäß verarbeitet, bleibt die Anwendung letztendlich hängen, da keine Sockets mehr verfügbar sind.If you don't handle the response properly, your application gets stuck eventually because no more sockets are available.

Beispiel für die Verwendung des http- oder https-Pakets:For example, when working with the http or https package:

const request = https.request(options, function(response) {
    response.on('data', function() { /* do nothing */ });
});

Wenn Sie App Service unter Linux auf einem Computer mit mehreren Kernen ausführen, hat es sich bewährt, für die Ausführung Ihrer Anwendung mit PM2 mehrere Node.js-Prozesse zu starten.If you are running on App Service on Linux on a machine with multiple cores, another best practice is to use PM2 to start multiple Node.js processes to execute your application. Dazu können Sie einen Startbefehl für Ihren Container angeben.You can do it by specifying a startup command to your container.

So starten Sie beispielsweise vier Instanzen:For example, to start four instances:

pm2 start /home/site/wwwroot/app.js --no-daemon -i 4

Wenn die Sicherung Ihrer App fehlerhaft zu werden beginntWhen your app backup starts failing

Die zwei häufigsten Gründe, warum eine App-Sicherung misslingt, sind ungültige Speichereinstellungen und eine ungültige Datenbankkonfiguration.The two most common reasons why app backup fails are: invalid storage settings and invalid database configuration. Diese Fehler treten in der Regel auf, wenn Änderungen an Speicher- oder Datenbankressourcen oder am Zugriff auf diese Ressourcen erfolgt sind (z.B. eine Aktualisierung der Anmeldeinformationen für die in den Sicherungseinstellungen ausgewählte Datenbank).These failures typically happen when there are changes to storage or database resources, or changes for how to access these resources (for example, credentials updated for the database selected in the backup settings). 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).Backups typically run on a schedule and require access to storage (for outputting the backed-up files) and databases (for copying and reading contents to be included in the backup). Das Ergebnis des Fehlens eines Zugriff auf diese Ressourcen wäre ein durchgängiger Ausfall von Sicherungen.The result of failing to access either of these resources would be consistent backup failure.

Wenn Sicherungsfehler auftreten, überprüfen Sie die letzten Ergebnisse, um herauszufinden, welche Art von Fehler auftritt.When backup failures happen, review most recent results to understand which type of failure is happening. Überprüfen und ändern Sie bei Speicherzugriffsfehlern die in der Sicherungskonfiguration verwendeten Speichereinstellungen.For storage access failures, review and update the storage settings used in the backup configuration. Überprüfen und ändern Sie bei Fehlern beim Datenbankzugriff Ihre Verbindungszeichenfolgen in den App-Einstellungen. Fahren Sie dann mit dem Ändern Ihrer Sicherungskonfiguration fort, sodass die erforderlichen Datenbanken einbezogen werden.For database access failures, review and update your connections strings as part of app settings; then proceed to update your backup configuration to properly include the required databases. Weitere Informationen zu App-Sicherungen finden Sie unter Sichern von Web-Apps in Azure App Service.For more information on app backups, see Back up a web app in Azure App Service.

Wenn neue Node.js-Apps in Azure App Service bereitgestellt werdenWhen new Node.js apps are deployed to Azure App Service

Die Azure App Service-Standardkonfiguration für Node.js-Apps soll den Bedürfnissen der am häufigsten verwendeten Apps am besten entsprechen.Azure App Service default configuration for Node.js apps is intended to best suit the needs of most common apps. Wenn die Konfiguration für Ihre Node.js-App von der personalisierten Abstimmung zur Leistungsverbesserung oder Optimierung des Ressourceneinsatzes für CPU-/Speicher-/Netzwerkressourcen profitieren würden, finden Sie weitere Informationen unter Bewährte Methoden und Problembehandlungsschritte für Node-Anwendungen bei Azure App Service.If configuration for your Node.js app would benefit from personalized tuning to improve performance or optimize resource usage for CPU/memory/network resources, see Best practices and troubleshooting guide for Node applications on Azure App Service. Dieser Artikel beschreibt die iisnode-Einstellungen, die Sie möglicherweise für Ihre Node.js-App konfigurieren müssen, sowie die verschiedenen Szenarien oder Probleme, mit denen Ihre App möglicherweise konfrontiert wird, und zeigt, wie Sie diese Probleme beheben.This article describes the iisnode settings you may need to configure for your Node.js app, describes the various scenarios or issues that your app may be facing, and shows how to address these issues.