Problembehandlung bei niedriger App-Leistung in Azure App Service

In diesem Artikel erfahren Sie, wie Sie App-Leistungsprobleme in Azure App Service beheben.

Wenn Sie beim Lesen dieses Artikels feststellen, dass Sie weitere Hilfe benötigen, können Sie Ihre Frage im MSDN Azure-Forum oder im Stack Overflow-Forumstellen, um dort Hilfe von Azure-Experten zu erhalten. Alternativ dazu haben Sie die Möglichkeit, einen Azure-Supportfall zu erstellen. Rufen Sie die Azure-Support-Website auf, und klicken Sie auf Support erhalten.

Symptom

Beim Navigieren in der App werden die Seiten langsam geladen, und manchmal tritt beim Laden der Seiten ein Timeout auf.

Ursache

Diese Fehler sind häufig auf Probleme auf der Anwendungsebene zurückzuführen, z. B.:

  • Netzwerkanforderungen, die sehr lange dauern
  • Ineffiziente Anwendungscodes oder Datenbankabfragen
  • Eine Anwendung mit hoher Speicher-/CPU-Auslastung
  • Eine Anwendung, die aufgrund einer Ausnahme abstürzt

Schritte zur Problembehandlung

Die Problembehandlung lässt sich in diesem Fall in drei unterschiedliche Aufgaben unterteilen, die nacheinander ausgeführt werden:

  1. Beobachten und Überwachen des Anwendungsverhaltens
  2. Sammeln von Daten
  3. Minimieren der Auswirkungen des Problems

App Service bietet Ihnen bei jedem Schritt verschiedene Optionen.

1. Beobachten und Überwachen des Anwendungsverhaltens

Nachverfolgen der Dienstintegrität

Microsoft Azure informiert jeweils aktuell über Dienstunterbrechungen oder Leistungsbeeinträchtigungen. Sie können die Integrität des Diensts im Azure-Portal nachverfolgen. Weitere Informationen finden Sie unter Nachverfolgen der Dienstintegrität.

Überwachen Ihrer App

Durch das Überwachen der Web-App können Sie herausfinden, ob in Ihrer Anwendung Probleme vorliegen. Klicken Sie auf dem Blatt Ihrer App auf die Kachel Anforderungen und Fehler. Auf dem Blatt Metrik werden alle Metriken angezeigt, die Sie hinzufügen können.

Sie können beispielsweise die folgenden Metriken für Ihre App überwachen:

  • Durchschnittlicher Arbeitssatz für Arbeitsspeicher
  • Antwortzeit
  • CPU-Zeit
  • Arbeitssatz für Arbeitsspeicher
  • Requests

monitor app performance

Weitere Informationen finden Sie unter:

Überwachen des Web-Endpunktstatus

Wenn Sie Ihre App im Tarif Standard ausführen, können Sie mit App Service zwei Endpunkte von drei geografischen Standorten aus überwachen.

Endpunktüberwachung konfiguriert Webtests von geografisch verteilten Standorten zum Testen der Reaktionszeit und der Verfügbarkeit von Web-URLs. Der Test führt einen HTTP GET-Aufruf für die Web-URL durch, um die Reaktionszeit und Verfügbarkeit der einzelnen Standorte zu ermitteln. Jeder konfigurierte Standort führt alle fünf Minuten einen Test aus.

Die Verfügbarkeit wird mit HTTP-Antwortcodes überwacht, und die Reaktionszeit wird in Millisekunden gemessen. Der Überwachungstest schlägt fehl, wenn der HTTP-Antwortcode größer als oder gleich 400 ist und die Antwort länger als 30 Sekunden benötigt. Der Endpunkt wird als verfügbar betrachtet, wenn die Überwachungstests von allen angegebenen Standorten aus erfolgreich waren.

Informationen zur Einrichtungen finden Sie unter Gewusst wie: Überwachen von Apps in Azure App Service.

Ein Video zur Endgeräteüberwachung finden Sie unter Pflegen von Azure-Websites plus Endgeräteüberwachung - mit Stefan Schackow .

Überwachung der Anwendungsleistung mithilfe von Erweiterungen

Sie können die Anwendungsleistung auch mit einer Websiteerweiterung überwachen.

Jede App Service-App bietet einen erweiterbaren Verwaltungsendpunkt, mit dem Sie eine Reihe leistungsstarker Tools verwenden können, die als Websiteerweiterungen bereitgestellt werden. Zu den Erweiterungen zählen Folgende:

  • Quellcode-Editoren wie Azure DevOps.
  • Verwaltungstools für verbundene Ressourcen wie eine MySQL-Datenbank, die mit einer App verbunden ist.

Ebenfalls zur Verfügung steht Azure Application Insights, eine Websiteerweiterung für die Leistungsüberwachung. Um Application Insights zu verwenden, erstellen Sie ihren Code mit einem SDK neu. Sie können auch eine Erweiterung installieren, die Zugriff auf zusätzliche Daten bietet. Mit dem SDK können Sie Code schreiben, um die Auslastung und Leistung Ihrer Anwendung genauer zu überwachen. Weitere Informationen finden Sie unter Leistungsüberwachung in Webanwendungen.

2. Sammeln von Daten

App Service bietet Diagnosefunktionen zum Protokollieren von Informationen sowohl über den Webserver als auch über die Webanwendung. Die Informationen sind logisch in Webserverdiagnose und Anwendungsdiagnose unterteilt.

Aktivieren der Webserverdiagnose

Sie können die folgenden Protokollarten aktivieren oder deaktivieren:

  • Detaillierte Fehlerprotokollierung - Detaillierte Fehlerinformationen für HTTP-Statuscodes, die auf einen Fehler hinweisen (Statuscode 400 oder höher). Diese können Informationen enthalten, mit deren Hilfe sich bestimmen lässt, warum der Server den Fehlercode zurückgegeben hat.
  • Ablaufverfolgung von Anforderungsfehlern - Detaillierte Informationen zu fehlgeschlagenen Anforderungen, einschließlich der Verfolgung von IIS-Komponenten, die zur Verarbeitung der Anforderung verwendet wurden, sowie die in jeder Komponente benötigte Zeit. Dies kann hilfreich sein, wenn Sie versuchen, die Leistung von Apps zu verbessern oder die Ursache eines bestimmten HTTP-Fehlers zu ermitteln.
  • Webserverprotokollierung : Informationen zu HTTP-Transaktionen im erweiterten W3C-Protokolldateiformat. Dies ist hilfreich, wenn Sie allgemeine App-Kennzahlen ermitteln möchten (etwa die Anzahl der verarbeiteten Anfragen oder die Anzahl der Anforderungen von einer bestimmten IP-Adresse).

Aktivieren der Anwendungsdiagnose

Es stehen verschiedene Optionen zur Verfügung: Sie können Daten zur Anwendungsleistung von App Service sammeln, Ihre Anwendung live über Visual Studio profilen oder den Anwendungscode ändern, um weitere Informationen und Ablaufverfolgungen zu protokollieren. Sie können die Optionen abhängig von dem Umfang des Zugriffs, der Ihnen für die Anwendung zur Verfügung steht, und den Erkenntnissen, die Sie durch die Überwachungstools gewonnen haben, auswählen.

Verwenden von Application Insights Profiler

Durch die Aktivierung von Application Insights Profiler können Sie mit der Erfassung ausführlicher Leistungsablaufverfolgungen beginnen. Wenn Sie Probleme untersuchen müssen, die in der Vergangenheit aufgetreten sind, können Sie bis zu fünf Tage rückwirkend auf Ablaufverfolgungen zugreifen. Sie können diese Option auswählen, solange Sie im Azure-Portal Zugriff auf die Application Insights-Ressource der App haben.

Application Insights Profiler bietet Statistiken zur Antwortzeit aller Webaufrufe und Ablaufverfolgungen, in denen angegeben ist, welche Codezeile die langsamen Antwortzeiten verursacht hat. Mitunter arbeitet die App Service-App langsam, da der Code nicht effektiv geschrieben wurde. Beispiele hierfür sind sequenzieller Code, der parallel ausgeführt werden kann, und unerwünschte Datenbanksperrkonflikte. Durch das Beseitigen dieser Engpässe im Code lässt sich die Leistung der App steigern, die aber ohne das Einrichten aufwendiger Ablaufverfolgungen und Protokolle schwer zu finden sind. Durch die von Application Insights Profiler gesammelten Ablaufverfolgungen können die Codezeilen identifiziert werden, die zur Verlangsamung der Anwendung führen. So kann dieses Problem in Bezug auf App Service-Apps behoben werden.

Weitere Informationen finden Sie unter Profilerstellung für Live-Azure App Service-Apps mit Application Insights.

Verwenden von Remoteprofilerstellung

In Azure App Service kann eine Remoteprofilerstellung von Web-Apps, API-Apps, mobilen Back Ends und WebJobs ausgeführt werden. Wählen Sie diese Option, wenn Sie Zugriff auf die App-Ressource haben und wissen, wie das Problem reproduziert werden kann, oder wenn Sie das genaue Zeitintervall kennen, in dem das Leistungsproblem auftritt.

Die Remoteprofilerstellung ist nützlich, wenn die CPU-Auslastung des Prozesses hoch ist und der Prozess langsamer als erwartet ausgeführt wird oder wenn die Latenz von HTTP-Anforderungen außergewöhnlich hoch ist. In diesem Fall können Sie dann eine Remoteprofilerstellung des Prozesses ausführen und die CPU-Samplingaufruflisten abrufen, um die Prozessaktivität sowie die langsamsten Pfade im Code zu analysieren.

Weitere Informationen finden Sie unter Unterstützung für Remoteprofilerstellung in Azure App Service.

Manuelles Einrichten von Diagnoseablaufverfolgungen

Wenn Sie Zugriff auf den Quellcode der Webanwendung haben, können Sie mit der Option „Anwendungsdiagnose“ die von einer Webanwendung erzeugten Informationen erfassen. ASP.NET-Anwendungen können die Klasse System.Diagnostics.Trace verwenden, um Informationen im Anwendungsdiagnoseprotokoll aufzuzeichnen. Allerdings müssen Sie den Code ändern und die Anwendung erneut bereitstellen. Diese Methode wird empfohlen, wenn Ihre App in einer Testumgebung ausgeführt wird.

Ausführlichen Anweisungen zum Konfigurieren der Anwendung für die Protokollierung finden Sie unter Aktivieren der Diagnoseprotokollierung für Apps in Azure App Service.

Verwenden des Diagnosetools

App Service stellt eine intelligente und interaktive Komponente bereit, mit der Sie eine Problembehandlung für Ihre App durchführen können, ohne dass eine Konfiguration erforderlich ist. Wenn bei Ihrer App Probleme auftreten, stellt das Diagnosetool Informationen zum Fehler bereit, damit Sie die richtigen Informationen finden, um das Problem einfacher und schneller behandeln und lösen zu können.

Navigieren Sie für den Zugriff auf die App Service-Diagnose zu Ihrer App Service-App oder App Service-Umgebung im Azure-Portal. Klicken Sie im linken Navigationsbereich auf Diagnose und Problembehandlung.

Verwenden der Kudu-Debugkonsole

App Service umfasst eine Debugkonsole zum Debuggen, Untersuchen und Hochladen von Dateien sowie JSON-Endpunkte zum Abrufen von Informationen über Ihre Umgebung. Diese Konsole wird als Kudu-Konsole oder SCM-Dashboard für Ihre App bezeichnet.

Sie können über den Link https://<Name_Ihrer_App>.scm.azurewebsites.net/ auf das Dashboard zugreifen.

Die Kudu-Konsole bietet z. B. folgende Funktionen:

  • Umgebungseinstellungen für Ihre Anwendung
  • Protokolldatenstrom
  • Speicherabbild zu Diagnosezwecken
  • Debugkonsole zum Ausführen von PowerShell-Cmdlets und grundlegenden DOS-Befehlen.

Eine weitere nützliche Funktion von Kudu ist die Möglichkeit, mithilfe von Kudu und dem SysInternals-Tool „Procdump“ Speicherabbilddateien zu erstellen, wenn Ihre Anwendung Ausnahmen (erste Chance) auslöst. Bei diesen Speicherabbilddateien handelt es sich um Momentaufnahmen des Prozesses, die beim Beheben komplizierterer Probleme mit Ihrer App hilfreich sein können.

Weitere Informationen zu den verfügbaren Funktionen in Kudu finden Sie unter Tools für Azure DevOps, die Sie kennen sollten.

3. Minimieren der Auswirkungen des Problems

Skalieren der App

In Azure App Service können Sie zum Steigern der Leistung und des Durchsatzes die Skalierung anpassen, mit der Sie Ihre Anwendung ausführen. Für das zentrale Hochskalieren einer App sind zwei zueinander in Beziehung stehende Schritte erforderlich: Sie müssen für den App Service-Plan ein Upgrade auf einen höheren Tarif durchführen, und Sie müssen nach dem Tarifwechsel bestimmte Einstellungen konfigurieren.

Weitere Informationen zur Skalierung finden Sie unter Skalieren einer App in Azure App Service.

Außerdem haben Sie die Möglichkeit, Ihre Anwendung auf mehreren Instanzen auszuführen. Das horizontale Hochskalieren erhöht nicht nur die Verarbeitungskapazität, sondern bietet auch ein gewisses Maß an Fehlertoleranz. Wenn der Prozess in einer Instanz ausfällt, können die anderen Instanzen weiterhin Anforderungen verarbeiten.

Sie können die Skalierung auf „Manuell“ oder „Automatisch“ festlegen.

Verwenden von „AutoHeal“

„AutoHeal“ startet den Arbeitsprozess für Ihre App basierend auf von Ihnen ausgewählten Einstellungen neu (z. B. Konfigurationsänderungen, Anforderungen, speicherbasierte Grenzwerte oder zum Ausführen einer Anforderung benötigte Zeit). In den meisten Fällen ist das Neustarten des Prozesses die schnellste Methode zum Beheben eines Problems. Sie können die App zwar immer direkt im Azure-Portal neu starten, „AutoHeal“ führt diesen Schritt jedoch automatisch für Sie aus. Sie müssen lediglich einige Trigger in der Stammdatei „web.config“ Ihrer App hinzufügen. Diese Einstellungen werden immer auf die gleiche Weise angewandt, selbst wenn es sich bei Ihrer Anwendung nicht um eine .NET-App handelt.

Weitere Informationen finden Sie unter Automatische Reparatur von Azure-Websites.

Neustarten der App

Ein Neustart ist oft die einfachste Methode zum Beheben einmaliger Probleme. Im Azure-Portal stehen auf dem Blatt Ihrer App Optionen zum Beenden oder Neustarten der App zur Verfügung.

restart app to solve performance issues

Sie können Ihre App auch mit Azure PowerShell verwalten. Weitere Informationen finden Sie unter Verwenden von Azure PowerShell mit dem Azure-Ressourcen-Manager.

Weitere Ressourcen

Tutorial: Ausführen eines Auslastungstests zum Identifizieren von Leistungsengpässen in einer Web-App