Freigeben über


FAQ zur Anwendungsleistung von Web-Apps in Azure

Notiz

Einige der folgende Richtlinien funktionieren eventuell nur mit Windows oder Linux App Services. Linux App Services werden beispielsweise standardmäßig im 64-Bit-Modus ausgeführt.

In diesem Artikel erhalten Sie Antworten auf häufig gestellte Fragen zu Problemen mit der Anwendungsleistung bei Azure App Service-Web-Apps.

Suchen Sie in den Azure-Foren bei MSDN und Stack Overflow, falls Sie Ihr Azure-Problem mit diesem Artikel nicht beheben konnten. Sie können Ihr Problem in diesen Foren oder an @AzureSupport auf Twitter posten. Sie können auch eine Azure-Supportanfrage senden. Wenn Sie eine Supportanfrage senden möchten, wählen Sie auf der Azure-Support-Seite die Option Support erhalten aus.

Warum zeigt mein App Service Plan die CPU-/Arbeitsspeicherauslastung auch dann an, wenn alle Web-Apps beendet werden?

Azure-App Dienst erfordert kontinuierliche Systemprozesse, die mehrere Plattformvorgänge und -features verarbeiten, z. B. SICHERHEITSUPDATEs, Verfügbarkeit der SCM-Konsole, Anwendungsüberwachung, Authentifizierung und viele andere wichtige Features Ihrer Web App.

Systemprozesse werden auch dann auf App-Dienstplänen ausgeführt, wenn keine Web-Apps ausgeführt werden oder wenn der App-Serviceplan keine Web-Apps enthält.

Die Plattformprozesse verbrauchen eine minimale Menge an Ressourcen (z. B. CPU, Arbeitsspeicher und Speicherplatz), und dasselbe sollte bei der Kapazitätsplanung, Überwachung und automatischen Skalierungstriggerkonfiguration eines App Service Plans berücksichtigt werden.

Warum ist meine App langsam?

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

Wie behebe ich das Problem einer hohen CPU-Auslastung?

In einigen Szenarien mit hoher CPU-Auslastung kann Ihre App tatsächlich mehr Computeressourcen benötigen. 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 Speicherabbild des Prozesses, das Sie anschließend untersuchen. 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 behebe ich das Problem einer hohen Arbeitsspeicherbelegung?

In einigen Szenarien mit hoher Arbeitsspeicherbelegung kann Ihre App tatsächlich mehr Computeressourcen benötigen. 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. Ein bestimmter Programmierstil kann auch die Arbeitsspeichernutzung erhöhen. Das Gewinnen von Einblicken, wodurch die gestiegene Arbeitsspeichernutzung ausgelöst wird, erfolgt in zwei Schritten. Erstellen Sie zunächst ein Speicherabbild des Prozesses, das Sie anschließend untersuchen. Mit dem Tool Crash Diagnoser im Katalog mit den Azure-Websiteerweiterungen können Sie diese beiden 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. Im Blogbeitrag Automate web apps hosted in Azure App Service by using PowerShell (Automatisieren von Web-Apps, die in Azure App Service gehostet werden, mithilfe von PowerShell) wird beschrieben, wie Sie auf Azure Resource Manager basierende PowerShell-Skripts zum Automatisieren gängiger Aufgaben verwenden können. Der Blogbeitrag enthält außerdem Beispielcode für verschiedene Verwaltungsaufgaben für Web-Apps. Beschreibungen und Syntax für alle Cmdlets für App Service-Web-Apps-finden Sie unter Az.Websites.

Wie zeige ich Ereignisprotokolle meiner Web-App an?

So zeigen Sie die Ereignisprotokolle für Ihre Web-App an

  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.

Wie erfasse ich ein Speicherabbild im Benutzermodus meiner Web-App?

So erfassen Sie ein Speicherabbild im Benutzermodus Ihrer Web-App

  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 Download Memory Dump>Download Memory Dump (Speicherabbild herunterladen > Vollständiges Speicherabbild) aus.

Wie zeige ich Informationen auf Prozessebene für meine Web-App an?

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.

Wenn ich zu meiner App navige, sehe ich "Fehler 403 – Diese Web-App wird beendet" angezeigt. Gewusst wie dies beheben?

Drei Bedingungen können diesen Fehler verursachen:

  • Für die Web-App wurde ein Abrechnungslimit erreicht, weshalb Ihre Website deaktiviert wurde.
  • Die Web-App wurde im Portal beendet.
  • Die Web-App hat einen Kontingentgrenzwert für Ressourcen erreicht, der für einen Serviceplan des Typs „Free“ oder „Shared“ gelten kann.

Um festzustellen, was den Fehler verursacht, und das Problem zu beheben, führen Sie die Schritte unter Web-Apps: Fehler 403 – Diese Web-App wird beendet aus.

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.

Wie verringere ich die Antwortzeit für die erste Anforderung nach einer Leerlaufzeit?

Web-Apps werden standardmäßig entladen, wenn sie für einen bestimmten Zeitraum im Leerlauf sind. Dadurch kann das System Ressourcen sparen. Der Nachteil ist, dass die Antwort auf die erste Anforderung nach Entladen der Web-App länger dauert, um der Web-App das Laden und Beginnen mit dem Senden von Antworten zu ermöglichen. In den Serviceplänen „Basic“ und „Standard“ können Sie die Einstellung Always On aktivieren, damit die App stets geladen bleibt. Dies verhindert nach einer Leerlaufzeit der App längere Ladezeiten. So ändern Sie die Always On-Einstellung

  1. Navigieren Sie im Azure-Portal zu Ihrer Web-App.
  2. Wählen Sie Konfiguration aus.
  3. Wählen Sie Allgemeine Einstellungen aus.
  4. Aktivieren Sie für Always On die Einstellung Ein.

Wie schalte ich die Ablaufverfolgung für Anforderungsfehler ein?

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 aktiviert ist, wählen Sie "Ein" aus.

  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. Wechseln Sie zum Herunterladen der Ablaufverfolgung für Anforderungsfehler im 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.

Die Meldung "Arbeitsprozess hat aufgrund des Grenzwerts für "Prozentspeicher" die Wiederverwendung angefordert. Gewusst wie dieses Problem beheben?

Der maximal verfügbare Arbeitsspeicher für einen 32-Bit-Prozess (selbst unter einem 64-Bit-Betriebssystem) ist 2 GB. Standardmäßig ist der Arbeitsprozess in App Service (für Kompatibilität mit älteren Webanwendungen) auf 32-Bit festgelegt.

Erwägen Sie einen Wechsel zu 64-Bit-Prozessen, damit Sie den zusätzlichen Arbeitsspeicher nutzen können, der in Ihrer Web-Worker-Rolle verfügbar ist. Diese Aktion löst einen Neustart der Web-App aus; planen Sie diese Aktion also entsprechend.

Beachten Sie außerdem, dass eine 64-Bit-Umgebung einen Serviceplan des Typs „Basic“ oder „Standard“ erfordert. Die Servicepläne „Free“ und „Shared“ werden stets in einer 32-Bit-Umgebung ausgeführt.

Weitere Informationen finden Sie unter Konfigurieren von Web-Apps in App Service.

Warum erfolgt für meine Anforderung nach 230 Sekunden ein Timeout?

Die Standardeinstellung für die Zeitüberschreitung nach Leerlauf von Azure Load Balancer ist vier Minuten. Diese Einstellung ist im Allgemeinen ein angemessenes Zeitlimit für eine Reaktion auf eine Webanforderung. Der App-Dienst gibt also ein Timeout an den Client zurück, wenn Ihre Anwendung innerhalb von ca. 240 Sekunden keine Antwort zurückgibt (230 Sekunden für Windows-App, 240 Sekunden auf der Linux-App). Wenn Ihre Web-App eine Hintergrundverarbeitung erfordert, wird empfohlen, mit Azure WebJobs zu arbeiten. Die Azure-Web-App kann WebJobs aufrufen und benachrichtigt werden, sobald die Hintergrundverarbeitung abgeschlossen ist. Sie können unter mehreren Methoden zum Verwenden von WebJobs wählen, einschließlich Warteschlangen und Trigger.

WebJobs werden zur Hintergrundverarbeitung eingesetzt. Sie können in einem WebJob so viel Hintergrundverarbeitung ausführen, wie Sie möchten. Weitere Informationen zu WebJobs finden Sie unter Ausführen von Hintergrundaufgaben mit WebJobs.

ASP.NET Core-Anwendungen, die in App Service gehostet werden, reagieren mitunter nicht mehr. Wie wird dieses Problem behoben?

Ein bekanntes Problem mit einer früheren Kestrel-Version kann möglicherweise dazu führen, dass eine ASP.NET Core 1.0-App, die in App Service gehostet wird, zeitweise nicht mehr reagiert. Ggf. wird auch diese Meldung angezeigt: „Fehler bei der angegebenen CGI-Anwendung, und der Server hat den Prozess beendet.“

Dieses Problem wurde in der Kestrel-Version 1.0.2 behoben. Diese Version ist im Update für ASP.NET Core 1.0.3 enthalten. Um dieses Problem zu beheben, aktualisieren Sie Ihre App-Abhängigkeiten auf Kestrel 1.0.2. Alternativ können Sie eine der beiden Problemumgehungen nutzen, die im Blogbeitrag ASP.NET Core 1.0 slow perf issues in App Service web apps (ASP.NET Core 1.0-Probleme aufgrund langsamer Leistung in App Service-Web-Apps) beschrieben werden.

Ich kann meine Protokolldateien nicht in der Dateistruktur meiner Web-App finden. Wie kann ich sie finden?

Wenn Sie die Funktion „Lokaler Cache“ von App Service nutzen, ist die Ordnerstruktur der Ordner „LogFiles“ und „Data“ Ihrer App Service-Instanz betroffen. Bei Verwenden des lokalen Caches werden in den Speicherordnern „LogFiles“ und „Data“ Unterordner erstellt. Die Unterordner folgen dem Benennungsmuster „Eindeutiger Bezeichner + Zeitstempel“. Jeder Unterordner entspricht einer VM-Instanz, in der die Web-App ausgeführt wird oder wurde.

Um zu ermitteln, ob Sie den lokalen Cache verwenden, überprüfen Sie die Registerkarte "App-Dienstanwendungseinstellungen". Wenn der lokale Cache verwendet wird, wird die App-Einstellung WEBSITE_LOCAL_CACHE_OPTION auf Always.

Wenn Sie den lokalen Cache nicht verwenden und dieses Problem auftreten, senden Sie eine Supportanfrage.

Ich sehe die Meldung "Es wurde versucht, auf einen Socket zuzugreifen, der durch seine Zugriffsberechtigungen verboten wurde.". Gewusst wie diesen Fehler beheben?

Dieser Fehler tritt normalerweise auf, wenn die ausgehenden TCP-Verbindungen in der VM-Instanz voll ausgelastet sind. Im App Service werden Grenzwerte für die maximale Anzahl ausgehender Verbindungen erzwungen, die für jede VM-Instanz hergestellt werden können. Weitere Informationen finden Sie unter Cross-VM numerical limits (VM-übergreifende numerische Grenzwerte).

Dieser Fehler kann außerdem auftreten, wenn Sie versuchen, in Ihrer Anwendung auf eine lokale Adresse zuzugreifen. Weitere Informationen finden Sie unter Local address requests (Anforderungen des Zugriffs auf lokale Adressen).

Weitere Informationen zu ausgehenden Verbindungen in Ihrer Web-App finden Sie im Blogbeitrag zu ausgehenden Verbindungen mit Azure-Websites.

Wie verwende ich Visual Studio zum Remotedebuggen meiner App Service-Web-App?

Eine ausführliche exemplarische Vorgehensweise, die Ihnen zeigt, wie Sie Ihre Web-App mithilfe von Visual Studio debuggen, finden Sie unter Remotedebuggen Ihrer App Service-Web-App.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.