Häufig gestellte Fragen zur Anwendungsleistung von Web-Apps in AzureApplication performance FAQs for Web Apps in Azure

Hinweis

Einige der folgende Richtlinien funktionieren eventuell nur mit Windows oder Linux App Services.Some of the below guidelines might only work on Windows or Linux App Services. Linux App Services werden beispielsweise standardmäßig im 64-Bit-Modus ausgeführt.For example, Linux App Services run in 64-bit mode by default.

In diesem Artikel erhalten Sie Antworten auf häufig gestellte Fragen zu Problemen mit der Anwendungsleistung bei Azure App Service-Web-Apps.This article has answers to frequently asked questions (FAQs) about application performance issues for the Web Apps feature of Azure App Service.

Suchen Sie in den Azure-Foren bei MSDN und Stack Overflow, falls Sie Ihr Azure-Problem mit diesem Artikel nicht beheben konnten.If your Azure issue is not addressed in this article, visit the Azure forums on MSDN and Stack Overflow. Sie können Ihr Problem in diesen Foren veröffentlichen oder auf Twitter an @AzureSupport senden.You can post your issue in these forums, or post to @AzureSupport on Twitter. Sie können auch eine Azure-Supportanfrage senden.You also can submit an Azure support request. Wenn Sie eine Supportanfrage senden möchten, wählen Sie auf der Azure-Support-Seite die Option Support erhalten aus.To submit a support request, on the Azure support page, select Get support.

Warum ist meine App langsam?Why is my app slow?

Mehrere Faktoren können für eine langsame App-Leistung verantwortlich sein.Multiple factors might contribute to slow app performance. Ausführliche Schritte zur Problembehandlung finden Sie unter Problembehandlung bei niedriger Web-App-Leistung in Azure App Service.For detailed troubleshooting steps, see Troubleshoot slow web app performance.

Wie behebe ich das Problem einer hohen CPU-Auslastung?How do I troubleshoot a high CPU-consumption scenario?

In einigen Szenarien mit hoher CPU-Auslastung kann Ihre App tatsächlich mehr Computeressourcen benötigen.In some high CPU-consumption scenarios, your app might truly require more computing resources. 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 that case, consider scaling to a higher service tier so the application gets all the resources it needs. In einigen Fällen wird eine hohe CPU-Auslastung möglicherweise durch eine fehlerhafte Schleife oder einen fehlerhaften Programmierstil verursacht.Other times, high CPU consumption might be caused by a bad loop or by a coding practice. Das Gewinnen von Einblicken, wodurch die gestiegene CPU-Auslastung ausgelöst wird, erfolgt in zwei Schritten.Getting insight into what's triggering increased CPU consumption is a two-part process. Erstellen Sie zunächst ein Speicherabbild des Prozesses, das Sie anschließend untersuchen.First, create a process dump, and then analyze the process dump. 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).For more information, see Capture and analyze a dump file for high CPU consumption for Web Apps.

Wie behebe ich das Problem einer hohen Arbeitsspeicherbelegung?How do I troubleshoot a high memory-consumption scenario?

In einigen Szenarien mit hoher Arbeitsspeicherbelegung kann Ihre App tatsächlich mehr Computeressourcen benötigen.In some high memory-consumption scenarios, your app might truly require more computing resources. 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 that case, consider scaling to a higher service tier so the application gets all the resources it needs. Mitunter kann ein Fehler im Code einen Arbeitsspeicherverlust verursachen.Other times, a bug in the code might cause a memory leak. Ein bestimmter Programmierstil kann auch die Arbeitsspeichernutzung erhöhen.A coding practice also might increase memory consumption. Das Gewinnen von Einblicken, wodurch die gestiegene Arbeitsspeichernutzung ausgelöst wird, erfolgt in zwei Schritten. Getting insight into what's triggering high memory consumption is a two-part process. Erstellen Sie zunächst ein Speicherabbild des Prozesses, das Sie anschließend untersuchen.First, create a process dump, and then analyze the process dump. Mit dem Tool Crash Diagnoser im Katalog mit den Azure-Websiteerweiterungen können Sie diese beiden Schritte effizient ausführen.Crash Diagnoser from the Azure Site Extension Gallery can efficiently perform both these steps. 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).For more information, see Capture and analyze a dump file for intermittent high memory for Web Apps.

Wie automatisiere ich App Service-Web-Apps mithilfe von PowerShell?How do I automate App Service web apps by using PowerShell?

Sie können PowerShell-Cmdlets verwenden, um App Service-Web-Apps zu verwalten und zu warten.You can use PowerShell cmdlets to manage and maintain App Service web apps. 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.In our blog post Automate web apps hosted in Azure App Service by using PowerShell, we describe how to use Azure Resource Manager-based PowerShell cmdlets to automate common tasks. Der Blogbeitrag enthält außerdem Beispielcode für verschiedene Verwaltungsaufgaben für Web-Apps.The blog post also has sample code for various web apps management tasks. Beschreibungen und Syntax für alle Cmdlets für App Service-Web-Apps-finden Sie unter Az.Websites.For descriptions and syntax for all App Service web apps cmdlets, see Az.Websites.

Wie zeige ich Ereignisprotokolle meiner Web-App an?How do I view my web app's event logs?

So zeigen Sie die Ereignisprotokolle für Ihre Web-App anTo view your web app's event logs:

  1. Melden Sie sich bei Ihrer Kudu-Website (https://*yourwebsitename*.scm.azurewebsites.net) an.Sign in to your Kudu website (https://*yourwebsitename*.scm.azurewebsites.net).
  2. Wählen Sie im Menü Debug Console > CMD aus.In the menu, select Debug Console > CMD.
  3. Wählen Sie den Ordner LogFiles aus.Select the LogFiles folder.
  4. Zum Überprüfen von Ereignisprotokollen aktivieren Sie das Stiftsymbol neben eventlog.xml.To view event logs, select the pencil icon next to eventlog.xml.
  5. Um die Protokolle herunterzuladen, führen Sie das PowerShell-Cmdlet Save-AzureWebSiteLog -Name webappname aus.To download the logs, run the PowerShell cmdlet Save-AzureWebSiteLog -Name webappname.

Wie erfasse ich ein Speicherabbild im Benutzermodus meiner Web-App?How do I capture a user-mode memory dump of my web app?

So erfassen Sie ein Speicherabbild im Benutzermodus Ihrer Web-AppTo capture a user-mode memory dump of your web app:

  1. Melden Sie sich bei Ihrer Kudu-Website (https://*yourwebsitename*.scm.azurewebsites.net) an.Sign in to your Kudu website (https://*yourwebsitename*.scm.azurewebsites.net).
  2. Wählen Sie das Menü Process Explorer aus.Select the Process Explorer menu.
  3. Klicken Sie mit der rechten Maustaste auf den Prozess w3wp.exe oder Ihren WebJob-Prozess.Right-click the w3wp.exe process or your WebJob process.
  4. Wählen Sie Download Memory Dump > Download Memory Dump (Speicherabbild herunterladen > Vollständiges Speicherabbild) aus.Select Download Memory Dump > Full Dump.

Wie zeige ich Informationen auf Prozessebene für meine Web-App an?How do I view process-level info for my web app?

Sie haben zwei Optionen zum Anzeigen von Informationen auf Prozessebene für Ihre Web-App:You have two options for viewing process-level information for your web app:

  • Führen Sie im Azure-Portal die folgenden Schritte aus:In the Azure portal:
    1. Öffnen Sie den Prozess-Explorer für die Web-App.Open the Process Explorer for the web app.
    2. Um die Details anzuzeigen, wählen Sie den Prozess w3wp.exe aus.To see the details, select the w3wp.exe process.
  • Gehen Sie in der Kudu-Konsole so vor:In the Kudu console:
    1. Melden Sie sich bei Ihrer Kudu-Website (https://*yourwebsitename*.scm.azurewebsites.net) an.Sign in to your Kudu website (https://*yourwebsitename*.scm.azurewebsites.net).
    2. Wählen Sie das Menü Process Explorer aus.Select the Process Explorer menu.
    3. Wählen Sie für den Prozess w3wp.exe die Option Properties (Eigenschaften) aus.For the w3wp.exe process, select Properties.

Wenn ich zu meiner App navigiere, wird „Fehler 403 – Diese Web-App wird beendet“ angezeigt.When I browse to my app, I see "Error 403 - This web app is stopped." Wie löse ich dieses Problem?How do I resolve this?

Drei Bedingungen können diesen Fehler verursachen:Three conditions can cause this error:

  • Für die Web-App wurde ein Abrechnungslimit erreicht, weshalb Ihre Website deaktiviert wurde.The web app has reached a billing limit and your site has been disabled.
  • Die Web-App wurde im Portal beendet.The web app has been stopped in the portal.
  • Die Web-App hat einen Kontingentgrenzwert für Ressourcen erreicht, der für einen Serviceplan des Typs „Free“ oder „Shared“ gelten kann.The web app has reached a resource quota limit that might apply to a Free or Shared scale service plan.

Um die Ursache des Fehlers zu ermitteln und das Problem zu beheben, führen Sie die Schritte unter Web-Apps: Error 403 – This web app is stopped (Web-Apps: Fehler 403 – Diese Web-App wurde beendet) aus.To see what is causing the error and to resolve the issue, follow the steps in Web Apps: "Error 403 – This web app is stopped".

Wo kann ich mehr zu Kontingenten und Limits für verschiedene App Service-Pläne erfahren?Where can I learn more about quotas and limits for various App Service plans?

Informationen zu Kontingenten und Limits finden Sie unter App Service-Limits.For information about quotas and limits, see App Service limits.

Wie verringere ich die Antwortzeit für die erste Anforderung nach einer Leerlaufzeit?How do I decrease the response time for the first request after idle time?

Web-Apps werden standardmäßig entladen, wenn sie einen festgelegten Zeitraum im Leerlauf waren.By default, web apps are unloaded if they are idle for a set period of time. Dadurch kann das System Ressourcen sparen.This way, the system can conserve resources. 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.The downside is that the response to the first request after the web app is unloaded is longer, to allow the web app to load and start serving responses. In den Serviceplänen „Basic“ und „Standard“ können Sie die Einstellung Always On aktivieren, damit die App stets geladen bleibt.In Basic and Standard service plans, you can turn on the Always On setting to keep the app always loaded. Dies verhindert nach einer Leerlaufzeit der App längere Ladezeiten.This eliminates longer load times after the app is idle. So ändern Sie die Always On-EinstellungTo change the Always On setting:

  1. Navigieren Sie im Azure-Portal zu Ihrer Web-App.In the Azure portal, go to your web app.
  2. Wählen Sie Konfiguration aus.Select Configuration
  3. Wählen Sie Allgemeine Einstellungen aus.Select General settings.
  4. Aktivieren Sie für Always On die Einstellung Ein.For Always On, select On.

Wie schalte ich die Ablaufverfolgung für Anforderungsfehler ein?How do I turn on failed request tracing?

So schalten Sie die Ablaufverfolgung für Anforderungsfehler einTo turn on failed request tracing:

  1. Navigieren Sie im Azure-Portal zu Ihrer Web-App.In the Azure portal, go to your web app.

  2. Wählen Sie Alle Einstellungen > Diagnoseprotokolle aus.Select All Settings > Diagnostics Logs.

  3. Wählen Sie für Ablaufverfolgung für Anforderungsfehler die Einstellung Ein.For Failed Request Tracing, select On.

  4. Wählen Sie Speichern aus.Select Save.

  5. Wählen Sie auf dem Web-App-Blatt Tools aus.On the web app blade, select Tools.

  6. Wählen Sie Visual Studio Online aus.Select Visual Studio Online.

  7. Wenn die Einstellung nicht Ein ist, wählen Sie Ein aus.If the setting is not On, select On.

  8. Klicken Sie auf Starten.Select Go.

  9. Wählen Sie Web.config aus.Select Web.config.

  10. Fügen Sie „system.webServer“ diese Konfiguration hinzu (um eine bestimmte URL zu erfassen):In system.webServer, add this configuration (to capture a specific URL):

    <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):To troubleshoot slow-performance issues, add this configuration (if the capturing request is taking more than 30 seconds):

    <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.To download the failed request traces, in the portal, go to your website.

  13. Wählen Sie Extras > Kudu > Starten aus.Select Tools > Kudu > Go.

  14. Wählen Sie im Menü Debug Console > CMD aus.In the menu, select Debug Console > CMD.

  15. Wählen Sie den Ordner LogFiles und dann den Ordner mit einem Namen aus, der mit W3SVC beginnt.Select the LogFiles folder, and then select the folder with a name that starts with W3SVC.

  16. Um die XML-Datei anzuzeigen, klicken Sie auf das Stiftsymbol.To see the XML file, select the pencil icon.

Mir wird eine Meldung angezeigt, die besagt, dass der Arbeitsprozess aufgrund des Grenzwerts „% Arbeitsspeicher“ einen Neustart angefordert habe.I see the message "Worker Process requested recycle due to 'Percent Memory' limit." Wie behebe ich dieses Problem?How do I address this issue?

Der maximal verfügbare Arbeitsspeicher für einen 32-Bit-Prozess (selbst unter einem 64-Bit-Betriebssystem) ist 2 GB.The maximum available amount of memory for a 32-bit process (even on a 64-bit operating system) is 2 GB. Standardmäßig ist der Arbeitsprozess in App Service (für Kompatibilität mit älteren Webanwendungen) auf 32-Bit festgelegt.By default, the worker process is set to 32-bit in App Service (for compatibility with legacy web applications).

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.Consider switching to 64-bit processes so you can take advantage of the additional memory available in your Web Worker role. Dies löst einen Neustart der Web-App aus, weshalb Sie entsprechend planen müssen.This triggers a web app restart, so schedule accordingly.

Beachten Sie außerdem, dass eine 64-Bit-Umgebung einen Serviceplan des Typs „Basic“ oder „Standard“ erfordert.Also note that a 64-bit environment requires a Basic or Standard service plan. Die Servicepläne „Free“ und „Shared“ werden stets in einer 32-Bit-Umgebung ausgeführt.Free and Shared plans always run in a 32-bit environment.

Weitere Informationen finden Sie unter Konfigurieren von Web-Apps in App Service.For more information, see Configure web apps in App Service.

Warum erfolgt für meine Anforderung nach 230 Sekunden ein Timeout?Why does my request time out after 230 seconds?

Die Standardeinstellung für die Zeitüberschreitung nach Leerlauf von Azure Load Balancer ist vier Minuten.Azure Load Balancer has a default idle timeout setting of four minutes. Dies ist im Allgemeinen ein angemessenes Zeitlimit für eine Reaktion auf eine Webanforderung.This is generally a reasonable response time limit for a web request. Wenn Ihre Web-App eine Hintergrundverarbeitung erfordert, wird empfohlen, mit Azure WebJobs zu arbeiten.If your web app requires background processing, we recommend using Azure WebJobs. Die Azure-Web-App kann WebJobs aufrufen und benachrichtigt werden, sobald die Hintergrundverarbeitung abgeschlossen ist.The Azure web app can call WebJobs and be notified when background processing is finished. Sie können unter mehreren Methoden zum Verwenden von WebJobs wählen, einschließlich Warteschlangen und Trigger.You can choose from multiple methods for using WebJobs, including queues and triggers.

WebJobs werden zur Hintergrundverarbeitung eingesetzt.WebJobs is designed for background processing. Sie können in einem WebJob so viel Hintergrundverarbeitung ausführen, wie Sie möchten.You can do as much background processing as you want in a WebJob. Weitere Informationen zu WebJobs finden Sie unter Ausführen von Hintergrundaufgaben mit WebJobs.For more information about WebJobs, see Run background tasks with WebJobs.

ASP.NET Core-Anwendungen, die in App Service gehostet werden, reagieren mitunter nicht mehr.ASP.NET Core applications that are hosted in App Service sometimes stop responding. Wie wird dieses Problem behoben?How do I fix this issue?

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.A known issue with an earlier Kestrel version might cause an ASP.NET Core 1.0 app that's hosted in App Service to intermittently stop responding. Möglicherweise wird auch die folgende Meldung angezeigt: „Fehler bei der angegebenen CGI-Anwendung, und der Server hat den Prozess beendet.“You also might see this message: "The specified CGI Application encountered an error and the server terminated the process."

Dieses Problem wurde in der Kestrel-Version 1.0.2 behoben.This issue is fixed in Kestrel version 1.0.2. Diese Version ist im Update für ASP.NET Core 1.0.3 enthalten.This version is included in the ASP.NET Core 1.0.3 update. Um dieses Problem zu beheben, aktualisieren Sie Ihre App-Abhängigkeiten auf Kestrel 1.0.2.To resolve this issue, make sure you update your app dependencies to use 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.Alternatively, you can use one of two workarounds that are described in the blog post ASP.NET Core 1.0 slow perf issues in App Service web apps.

Ich kann meine Protokolldateien nicht in der Dateistruktur meiner Web-App finden.I can't find my log files in the file structure of my web app. Wie kann ich sie finden?How can I find them?

Wenn Sie die Funktion „Lokaler Cache“ von App Service nutzen, ist die Ordnerstruktur der Ordner „LogFiles“ und „Data“ Ihrer App Service-Instanz betroffen.If you use the Local Cache feature of App Service, the folder structure of the LogFiles and Data folders for your App Service instance are affected. Bei Verwenden des lokalen Caches werden in den Speicherordnern „LogFiles“ und „Data“ Unterordner erstellt.When Local Cache is used, subfolders are created in the storage LogFiles and Data folders. Die Unterordner folgen dem Benennungsmuster „Eindeutiger Bezeichner + Zeitstempel“.The subfolders use the naming pattern "unique identifier" + time stamp. Jeder Unterordner entspricht einer VM-Instanz, in der die Web-App ausgeführt wird oder wurde.Each subfolder corresponds to a VM instance in which the web app is running or has run.

Um zu bestimmen, ob Sie den lokalen Cache verwenden, überprüfen Sie die App Service-Registerkarte Anwendungseinstellungen. Wenn die lokalen Cache verwendet wird, ist die App-Einstellung WEBSITE_LOCAL_CACHE_OPTION auf Always festgelegt.To determine whether you are using Local Cache, check your App Service Application settings tab. If Local Cache is being used, the app setting WEBSITE_LOCAL_CACHE_OPTION is set to Always.

Wenn Sie den lokalen Cache nicht verwenden und dieses Problem auftritt, senden Sie eine Supportanfrage.If you are not using Local Cache and are experiencing this issue, submit a support request.

Mir wird eine Meldung angezeigt, die besagt, dass ein Versuch erfolgt sei, auf eine Socket in einer Weise zuzugreifen, die gemäß ihren Zugriffsberechtigungen unzulässig ist.I see the message "An attempt was made to access a socket in a way forbidden by its access permissions." Wie löse ich dieses Problem?How do I resolve this?

Dieser Fehler tritt normalerweise auf, wenn die ausgehenden TCP-Verbindungen in der VM-Instanz voll ausgelastet sind.This error typically occurs if the outbound TCP connections on the VM instance are exhausted. Im App Service werden Grenzwerte für die maximale Anzahl ausgehender Verbindungen erzwungen, die für jede VM-Instanz hergestellt werden können.In App Service, limits are enforced for the maximum number of outbound connections that can be made for each VM instance. Weitere Informationen finden Sie unter Cross-VM numerical limits (VM-übergreifende numerische Grenzwerte).For more information, see Cross-VM numerical limits.

Dieser Fehler kann außerdem auftreten, wenn Sie versuchen, in Ihrer Anwendung auf eine lokale Adresse zuzugreifen.This error also might occur if you try to access a local address from your application. Weitere Informationen finden Sie unter Local address requests (Anforderungen des Zugriffs auf lokale Adressen).For more information, see Local address requests.

Weitere Informationen zu ausgehenden Verbindungen in Ihrer Web-App finden Sie im Blogbeitrag zu ausgehenden Verbindungen mit Azure-Websites.For more information about outbound connections in your web app, see the blog post about outgoing connections to Azure websites.

Wie verwende ich Visual Studio zum Remotedebuggen meiner App Service-Web-App?How do I use Visual Studio to remote debug my 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.For a detailed walkthrough that shows you how to debug your web app by using Visual Studio, see Remote debug your App Service web app.