Leistung und Verfügbarkeit von Web-Apps sowie Anwendungsprobleme für Azure App Service

Notiz

Einige der folgenden Richtlinien funktionieren möglicherweise nur für Windows-App Service oder Linux App Service. Beispielsweise wird der Linux-App-Dienst standardmäßig im 64-Bit-Modus ausgeführt.

Zusammenfassung

Dieser Artikel beantwortet häufig gestellte Fragen (FAQ) zu Anwendungsleistungsproblemen für das Web-Apps-Feature von Azure App Service.

Wo kann ich mehr zu Kontingenten und Limits für verschiedene App Service-Pläne erfahren?

Informationen zu Kontingenten und Limits finden Sie unter App Service-Limits.

Mein App Service-Plan zeigt die CPU- oder Speicherauslastung auch dann an, wenn alle Web-Apps beendet werden.

Der App-Dienst erfordert kontinuierliche Systemprozesse, die mehrere Plattformvorgänge und -features verarbeiten, z. B. Sicherheitsupdates, Verfügbarkeit der SCM-Konsole (Kudu), Anwendungsüberwachung, Authentifizierung und viele andere Web-App-Features.

Systemprozesse werden auf App Service-Plänen ausgeführt, auch wenn keine Web-Apps ausgeführt werden oder wenn der App Service-Plan keine Web-Apps enthält.

Die Plattformprozesse verbrauchen eine minimale Menge an Ressourcen (z. B. CPU, Arbeitsspeicher und Speicherplatz), und Sie sollten diese Ressourcen während der Kapazitätsplanung, Überwachung und automatischen Skalierungstriggerkonfiguration eines App Service-Plans berücksichtigen.

Die Leistung meiner App ist langsam.

Mehrere Faktoren können für eine langsame App-Leistung verantwortlich sein. Ausführliche Schritte zur Problembehandlung finden Sie unter Problembehandlung bei langsamer Web-App-Leistung.

Tipp

  • Aktivieren Sie die Einstellung "AlwaysOn"unter> "Allgemeine Konfigurationseinstellungen", um die App warm zu halten und Kaltstarts zu vermeiden. Diese Einstellung trägt dazu bei, die Verzögerung nach Leerlaufzeit zu reduzieren, insbesondere in den Standard- und höheren Plänen.
  • Konfigurieren Sie einen Integritätsprüfungspfad, um die App-Integrität zu überwachen und nicht reagierende Instanzen automatisch zu ersetzen. Diese Konfiguration trägt dazu bei, Verfügbarkeit und Leistung aufrechtzuerhalten. Weitere Informationen finden Sie unter Überwachen von App Service-Instanzen mithilfe der Integritätsprüfung.

Wie kann ich hohe CPU-Auslastung beheben?

In einigen Szenarien mit hoher CPU-Auslastung erfordert Ihre App möglicherweise wirklich mehr Computerressourcen. Erwägen Sie in diesem Fall eine Skalierung auf eine höhere Dienstebene, damit die Anwendung alle Ressourcen erhält, die sie benötigt. In einigen Fällen wird eine hohe CPU-Auslastung möglicherweise durch eine fehlerhafte Schleife oder einen fehlerhaften Programmierstil verursacht. Das Gewinnen von Einblicken, wodurch die gestiegene CPU-Auslastung ausgelöst wird, erfolgt in zwei Schritten. Erstellen Sie zunächst ein Prozessabbild, und analysieren Sie dann das Prozessabbild. Weitere Informationen finden Sie unter Capture and analyze a dump file for high CPU consumption for Web-Apps (Erfassen und Analysieren einer Speicherabbilddatei bei hohe CPU-Nutzung durch Web-Apps).

Wie behebt ich eine hohe Arbeitsspeicherauslastung?

In einigen Szenarien mit hoher Arbeitsspeicherauslastung erfordert Ihre App möglicherweise wirklich mehr Computerressourcen. Erwägen Sie in diesem Fall eine Skalierung auf eine höhere Dienstebene, damit die Anwendung alle Ressourcen erhält, die sie benötigt. Mitunter kann ein Fehler im Code einen Arbeitsspeicherverlust verursachen. Eine Codierungspraxis kann auch den Arbeitsspeicherverbrauch erhöhen. Das Gewinnen von Einblicken, wodurch die gestiegene Arbeitsspeichernutzung ausgelöst wird, erfolgt in zwei Schritten. Erstellen Sie zunächst ein Prozessabbild, und analysieren Sie dann das Prozessabbild. Crash Diagnoser aus dem Katalog für Azure-Websiteerweiterungen kann beide Schritte effizient ausführen. Weitere Informationen finden Sie unter Capture and analyze a dump file for intermittent high memory for Web-Apps (Erfassen und Analysieren einer Speicherabbilddatei bei zeitweiliger hoher Arbeitsspeichernutzung durch Web-Apps).

Wie automatisiere ich App Service-Web-Apps mithilfe von PowerShell?

Sie können PowerShell-Cmdlets verwenden, um App Service-Web-Apps zu verwalten und zu warten. Weitere Informationen zur Verwendung von Azure Resource Manager-basierten PowerShell-Cmdlets zum Automatisieren allgemeiner Aufgaben finden Sie unter Automatisieren von Web-Apps, die in Azure App Service gehostet werden.

Notiz

Verwenden Sie für aktuelle Automatisierungsskripts das neueste Az.Websites-Modul . Das ältere AzureRM Modul ist veraltet.

Ich muss Informationen sammeln, um probleme mit meiner Web-App zu beheben

Anzeigen der Ereignisprotokolle einer Web-App

Führen Sie die folgenden Schritte aus, um die Ereignisprotokolle einer Web-App anzuzeigen:

  1. Melden Sie sich bei Ihrer Kudu-Website (https://*yourwebsitename*.scm.azurewebsites.net) an.
  2. Wählen Sie im Menü Debug Console>CMD aus.
  3. Wählen Sie den Ordner LogFiles aus.
  4. Zum Überprüfen von Ereignisprotokollen aktivieren Sie das Stiftsymbol neben eventlog.xml.
  5. Um die Protokolle herunterzuladen, führen Sie das PowerShell-Cmdlet Save-AzureWebSiteLog -Name webappname aus.

Erfassen eines Speicherabbilds für den Benutzermodus einer Web-App

Führen Sie die folgenden Schritte aus, um ein Speicherabbild für einen Benutzermodus einer Web-App zu erfassen:

  1. Melden Sie sich bei Ihrer Kudu-Website (https://*yourwebsitename*.scm.azurewebsites.net) an.
  2. Wählen Sie das Menü Process Explorer aus.
  3. Klicken Sie mit der rechten Maustaste auf den Prozess w3wp.exe oder Ihren WebJob-Prozess.
  4. Wählen Sie Speicherabbild herunterladen>Vollständiges Speicherabbild aus.

Anzeigen von Informationen auf Prozessebene für eine Web-App

Sie haben zwei Optionen zum Anzeigen von Informationen auf Prozessebene für Ihre Web-App:

  • Im Azure-Portal:

    1. Öffnen Sie den Prozess-Explorer für die Web-App.
    2. Um die Details anzuzeigen, wählen Sie den Prozess w3wp.exe aus.
  • In der Kudu-Konsole:

    1. Melden Sie sich bei Ihrer Kudu-Website (https://*yourwebsitename*.scm.azurewebsites.net) an.
    2. Wählen Sie das Menü Process Explorer aus.
    3. Wählen Sie für den Prozess w3wp.exe die Option Properties (Eigenschaften) aus.

Ich kann meine Protokolldateien nicht in der Ordnerstruktur meiner Web-App finden, wenn ich das lokale Cachefeature von App Service verwende.

Wenn Sie das lokale Cachefeature von App Service verwenden, wirkt es sich auf die Ordnerstruktur der LogFiles- und Datenordner für Ihre App Service-Instanz aus. Wenn der lokale Cache verwendet wird, erstellt das System Unterordner in den Speicher-LogFiles und Datenordnern. Die Unterordner verwenden das Namensschema „eindeutiger Bezeichner“ gefolgt von einem Zeitstempel. Jeder Unterordner entspricht einer Instanz eines virtuellen Computers (VM), in der die Web-App ausgeführt wird oder ausgeführt wurde.

Um festzustellen, ob Sie den lokalen Cache verwenden, überprüfen Sie in Ihrem App Service die Registerkarte Anwendungseinstellungen. Wenn das System den lokalen Cache verwendet, ist die App-Einstellung WEBSITE_LOCAL_CACHE_OPTION auf Always festgelegt.

So aktivieren Sie die Protokollierung fehlgeschlagener Anforderungen

Führen Sie die folgenden Schritte aus, um die Ablaufverfolgung fehlgeschlagener Anforderungen zu aktivieren:

  1. Navigieren Sie im Azure-Portal zu Ihrer Web-App.

  2. Wählen Sie Alle Einstellungen>Diagnoseprotokolle aus.

  3. Wählen Sie für Ablaufverfolgung für Anforderungsfehler die Einstellung Ein.

  4. Wählen Sie Speichern.

  5. Wählen Sie auf dem Web-App-Blatt Tools aus.

  6. Wählen Sie Visual Studio Online aus.

  7. Wenn die Einstellung nicht Ein ist, wählen Sie Ein.

  8. Klicken Sie auf Starten.

  9. Wählen Sie Web.config aus.

  10. Fügen Sie in "system.webServer" die folgende Konfiguration hinzu (um eine bestimmte URL zu erfassen):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*api*" />
    <add path="*api*">
    <traceAreas>
    <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  11. Um Probleme aufgrund langsamer Leistung zu beheben, fügen Sie diese Konfiguration hinzu (wenn die Erfassungsanforderung mehr als 30 Sekunden benötigt):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*" />
    <add path="*">
    <traceAreas> <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions timeTaken="00:00:30" statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  12. Um die Fehleranforderungsablaufverfolgungen herunterzuladen, wechseln Sie im Azure-Portal zu Ihrer Website.

  13. Wählen Sie Extras>Kudu>Starten aus.

  14. Wählen Sie im Menü Debug Console>CMD aus.

  15. Wählen Sie den Ordner LogFiles und dann den Ordner mit einem Namen aus, der mit W3SVC beginnt.

  16. Um die XML-Datei anzuzeigen, klicken Sie auf das Stiftsymbol.

Weitere Empfehlungen für Leistung und Resilienz

  • Verwenden Sie Application Insights und Azure Monitor für die vollständige Überwachung des gesamten Stacks Ihrer App Service-Anwendung, einschließlich Telemetrie, Abhängigkeitsnachverfolgung und Livemetriken.

  • Wenn Sie in Regionen bereitstellen, die Verfügbarkeitszonen unterstützen, sollten Sie zonenredundanz aktivieren, um die Resilienz während regionaler Ausfälle zu verbessern. Weitere Informationen finden Sie unter Zuverlässigkeit in Azure App Service.

  • Der App-Dienst wird routinemäßig gewartet, um die Zuverlässigkeit der Plattform sicherzustellen. Um das Updateverhalten besser zu steuern, insbesondere in App Service-Umgebung v3, konfigurieren Sie die Upgradeeinstellungen. Weitere Informationen finden Sie unter Routinewartung (geplant) für Azure App Service.