FAQ sur les performances des applications web Azure dans AzureApplication performance FAQs for Web Apps in Azure

Notes

Certaines instructions ci-dessous fonctionnent uniquement sur les App Services Windows ou Linux.Some of the below guidelines might only work on Windows or Linux App Services. Par exemple, les App Services Linux s’exécutent en mode 64 bits par défaut.For example, Linux App Services run in 64-bit mode by default.

Cet article fournit des réponses aux questions fréquemment posées (FAQ) sur les problèmes de performances des applications pour la fonctionnalité Web Apps d’Azure App Service.This article has answers to frequently asked questions (FAQs) about application performance issues for the Web Apps feature of Azure App Service.

Si le problème lié à Azure n’est pas traité dans cet article, parcourez les forums Azure sur MSDN et Stack Overflow.If your Azure issue is not addressed in this article, visit the Azure forums on MSDN and Stack Overflow. Vous pouvez publier votre problème sur ces forums ou @AzureSupport sur Twitter.You can post your issue in these forums, or post to @AzureSupport on Twitter. Vous pouvez également envoyer une demande de support Azure.You also can submit an Azure support request. Pour envoyer une demande de support sur la page Prise en charge Azure, sélectionnez Obtenir de l’aide.To submit a support request, on the Azure support page, select Get support.

Pourquoi mon application est-elle lente ?Why is my app slow?

Plusieurs facteurs peuvent ralentir les performances d’une application.Multiple factors might contribute to slow app performance. Pour obtenir des étapes de dépannage détaillées, consultez Résoudre les problèmes de lenteur d’une application web.For detailed troubleshooting steps, see Troubleshoot slow web app performance.

Comment puis-je résoudre un problème de consommation excessive du processeur ?How do I troubleshoot a high CPU-consumption scenario?

Dans certaines situations de consommation excessive du processeur, votre application peut vraiment nécessiter davantage de ressources informatiques.In some high CPU-consumption scenarios, your app might truly require more computing resources. Dans ce cas, vous pouvez évoluer vers un niveau de service supérieur afin que l’application obtienne toutes les ressources dont elle a besoin. In that case, consider scaling to a higher service tier so the application gets all the resources it needs. Dans d’autres cas, une consommation excessive du processeur peut être due à une boucle incorrecte ou à une méthode de codage.Other times, high CPU consumption might be caused by a bad loop or by a coding practice. Obtenir un aperçu de ce qui déclenche une consommation excessive du processeur est un processus en deux parties.Getting insight into what's triggering increased CPU consumption is a two-part process. Créez d’abord un vidage du processus puis analysez ce vidage de processus.First, create a process dump, and then analyze the process dump. Pour plus d’informations, consultez Capturer et analyser un fichier de vidage en cas de consommation excessive du processeur pour Web Apps.For more information, see Capture and analyze a dump file for high CPU consumption for Web Apps.

Comment résoudre les problèmes de consommation excessive de la mémoire ?How do I troubleshoot a high memory-consumption scenario?

Dans certaines situations de consommation excessive de mémoire, votre application peut vraiment nécessiter davantage de ressources informatiques.In some high memory-consumption scenarios, your app might truly require more computing resources. Dans ce cas, vous pouvez évoluer vers un niveau de service supérieur afin que l’application obtienne toutes les ressources dont elle a besoin. In that case, consider scaling to a higher service tier so the application gets all the resources it needs. À d’autres moments, un bogue dans le code peut entraîner une fuite de mémoire.Other times, a bug in the code might cause a memory leak. Une pratique de codage peut également augmenter la consommation de mémoire.A coding practice also might increase memory consumption. Obtenir un aperçu de ce qui déclenche une consommation excessive de mémoire est un processus en deux parties. Getting insight into what's triggering high memory consumption is a two-part process. Créez d’abord un vidage du processus puis analysez ce vidage de processus.First, create a process dump, and then analyze the process dump. L’outil Crash Diagnoser d’Azure Site Extension Gallery peut effectuer efficacement ces deux étapes.Crash Diagnoser from the Azure Site Extension Gallery can efficiently perform both these steps. Pour plus d’informations, consultez Capturer et analyser un fichier de vidage en cas de consommation excessive intermittente de mémoire pour Web Apps.For more information, see Capture and analyze a dump file for intermittent high memory for Web Apps.

Comment automatiser les applications web App Service à l’aide de PowerShell ?How do I automate App Service web apps by using PowerShell?

Vous pouvez utiliser les applets de commande PowerShell pour gérer et mettre à jour des applications web App Service.You can use PowerShell cmdlets to manage and maintain App Service web apps. Dans notre billet de blog Automatiser des applications web hébergées dans Azure App Service à l’aide de PowerShell, nous expliquons comment utiliser des applets de commande PowerShell basée sur Azure Resource Manager pour automatiser des tâches courantes.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. Ce billet de blog fournit également un exemple de code pour diverses tâches de gestion des applications web.The blog post also has sample code for various web apps management tasks. Pour des descriptions et la syntaxe de toutes les applets de commande des applications web App Service, consultez Az.Websites.For descriptions and syntax for all App Service web apps cmdlets, see Az.Websites.

Comment afficher les journaux des événements de mon application web ?How do I view my web app's event logs?

Pour afficher les journaux des événements de votre application web :To view your web app's event logs:

  1. Connectez-vous à votre site web Kudu (https://*yourwebsitename*.scm.azurewebsites.net).Sign in to your Kudu website (https://*yourwebsitename*.scm.azurewebsites.net).
  2. Dans le menu, sélectionnez Console de débogage > CMD.In the menu, select Debug Console > CMD.
  3. Sélectionnez le dossier LogFiles.Select the LogFiles folder.
  4. Pour afficher les journaux des événements, sélectionnez l’icône en forme de crayon en regard de eventlog.xml.To view event logs, select the pencil icon next to eventlog.xml.
  5. Pour télécharger les journaux d’activité, exécutez l’applet de commande PowerShell Save-AzureWebSiteLog -Name webappname.To download the logs, run the PowerShell cmdlet Save-AzureWebSiteLog -Name webappname.

Comment capturer un vidage de mémoire en mode utilisateur de mon application web ?How do I capture a user-mode memory dump of my web app?

Pour capturer un vidage de mémoire en mode utilisateur de votre application web :To capture a user-mode memory dump of your web app:

  1. Connectez-vous à votre site web Kudu (https://*yourwebsitename*.scm.azurewebsites.net).Sign in to your Kudu website (https://*yourwebsitename*.scm.azurewebsites.net).
  2. Sélectionnez le menu Explorateur de processus.Select the Process Explorer menu.
  3. Cliquez avec le bouton droit sur le menu w3wp.exe ou sur votre processus WebJob.Right-click the w3wp.exe process or your WebJob process.
  4. Sélectionnez Télécharger le vidage de mémoire > Vidage complet.Select Download Memory Dump > Full Dump.

Comment afficher les informations au niveau processus pour mon application web ?How do I view process-level info for my web app?

Vous avez deux options pour afficher les informations au niveau processus pour votre application web :You have two options for viewing process-level information for your web app:

  • Dans le portail Azure :In the Azure portal:
    1. Ouvrez l ’Explorateur de processus pour l’application web.Open the Process Explorer for the web app.
    2. Pour afficher les détails, sélectionnez le processus w3wp.exe.To see the details, select the w3wp.exe process.
  • Dans la console Kudu :In the Kudu console:
    1. Connectez-vous à votre site web Kudu (https://*yourwebsitename*.scm.azurewebsites.net).Sign in to your Kudu website (https://*yourwebsitename*.scm.azurewebsites.net).
    2. Sélectionnez le menu Explorateur de processus.Select the Process Explorer menu.
    3. Pour le processus w3wp.exe, sélectionnez Propriétés.For the w3wp.exe process, select Properties.

Lorsque j’accède à mon application, le message « Erreur 403 - Cette application web est arrêtée. » s’affiche.When I browse to my app, I see "Error 403 - This web app is stopped." Comment résoudre ce problème ?How do I resolve this?

Trois conditions peuvent provoquer cette erreur :Three conditions can cause this error:

  • L’application web a atteint une limite de facturation et votre site a été désactivé.The web app has reached a billing limit and your site has been disabled.
  • L’application web a été arrêtée dans le portail.The web app has been stopped in the portal.
  • L’application web a atteint une limite de quota de ressources qui peut s’appliquer à un plan de service de mise à l’échelle gratuit ou partagé.The web app has reached a resource quota limit that might apply to a Free or Shared scale service plan.

Pour voir ce qui provoque l’erreur et résoudre le problème, suivez les étapes de la rubrique Web Apps : « Erreur 403 - Cette application web est arrêtée ».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".

Où puis-je obtenir plus d’informations sur les quotas et les limites des différents plans App Service ?Where can I learn more about quotas and limits for various App Service plans?

Pour plus d’informations sur les quotas et les limites, consultez Limites App Service.For information about quotas and limits, see App Service limits.

Comment réduire les temps de réponse de la première requête après une période d’inactivité ?How do I decrease the response time for the first request after idle time?

Par défaut, les applications web sont déchargées si elles restent inactives pendant un laps de temps défini.By default, web apps are unloaded if they are idle for a set period of time. De cette manière, le système peut économiser les ressources.This way, the system can conserve resources. L’inconvénient est que la réponse à la première requête une fois que l’application web est déchargée est plus longue, pour permettre à l’application web de charger puis de démarrer le traitement des réponses.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. Dans les plans de service De base et Standard, vous pouvez activer le paramètre Always On afin que l’application reste toujours chargée.In Basic and Standard service plans, you can turn on the Always On setting to keep the app always loaded. Cela raccourcit les délais de chargement une fois que l’application est inactive.This eliminates longer load times after the app is idle. Pour modifier le paramètre Always On :To change the Always On setting:

  1. Dans le portail Azure, accédez à votre application web.In the Azure portal, go to your web app.
  2. Sélectionnez Configuration.Select Configuration
  3. Sélectionnez Paramètres généraux.Select General settings.
  4. Pour Always On, sélectionnez On.For Always On, select On.

Comment activer le suivi des demandes ayant échoué ?How do I turn on failed request tracing?

Pour activer le suivi des demandes ayant échoué :To turn on failed request tracing:

  1. Dans le portail Azure, accédez à votre application web.In the Azure portal, go to your web app.

  2. Sélectionnez Tous les paramètres > Journaux de diagnostic.Select All Settings > Diagnostics Logs.

  3. Pour Suivi des demandes ayant échoué, sélectionnez On.For Failed Request Tracing, select On.

  4. Sélectionnez Enregistrer.Select Save.

  5. Dans le panneau des applications web, sélectionnez Outils.On the web app blade, select Tools.

  6. Sélectionnez Visual Studio Online.Select Visual Studio Online.

  7. Si le paramètre n’est pas défini sur On, sélectionnez On.If the setting is not On, select On.

  8. Sélectionnez Go.Select Go.

  9. Sélectionnez Web.config.Select Web.config.

  10. Dans system.webServer, ajoutez cette configuration (pour capturer une URL spécifique) :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. Pour résoudre les problèmes de baisse des performances, ajoutez cette configuration (si la demande de capture prend plus de 30 secondes) :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. Pour télécharger les traces de demandes ayant échoué, dans le portail, accédez à votre site web.To download the failed request traces, in the portal, go to your website.

  13. Sélectionnez Outils > Kudu > Go.Select Tools > Kudu > Go.

  14. Dans le menu, sélectionnez Console de débogage > CMD.In the menu, select Debug Console > CMD.

  15. Sélectionnez le dossier LogFiles puis le dossier dont le nom commence par W3SVC.Select the LogFiles folder, and then select the folder with a name that starts with W3SVC.

  16. Pour afficher le fichier XML, sélectionnez l’icône en forme de crayon.To see the XML file, select the pencil icon.

Le message « Worker Process requested recycle due to 'Percent Memory' limit » (un processus de travail a demandé un recyclage en raison d’une limite de pourcentage de mémoire) s’affiche.I see the message "Worker Process requested recycle due to 'Percent Memory' limit." Comment pour résoudre ce problème ?How do I address this issue?

La quantité maximale de mémoire disponible pour un processus 32 bits (même sur un système d’exploitation 64 bits) est de 2 Go.The maximum available amount of memory for a 32-bit process (even on a 64-bit operating system) is 2 GB. Par défaut, le processus de travail est défini sur 32 bits dans App Service (à des fins de compatibilité avec les applications web héritées).By default, the worker process is set to 32-bit in App Service (for compatibility with legacy web applications).

Vous pouvez basculer vers des processus 64 bits pour tirer parti de la mémoire supplémentaire disponible de votre rôle de travail web.Consider switching to 64-bit processes so you can take advantage of the additional memory available in your Web Worker role. Comme cette opération déclenche un redémarrage de l’application web, vous devez la planifier en conséquence.This triggers a web app restart, so schedule accordingly.

Notez également qu’un environnement 64 bits nécessite un plan de service De base ou Standard.Also note that a 64-bit environment requires a Basic or Standard service plan. Les plans Gratuit et Partagé s’exécutent toujours dans un environnement 32 bits.Free and Shared plans always run in a 32-bit environment.

Pour plus d’informations, consultez Configurer des applications web dans App Service.For more information, see Configure web apps in App Service.

Pourquoi ma demande expire-t-elle au bout de 230 secondes ?Why does my request time out after 230 seconds?

L’équilibrage de charge Azure comporte un paramètre de délai d’inactivité par défaut de quatre minutes.Azure Load Balancer has a default idle timeout setting of four minutes. Il s’agit généralement d’un délai de réponse raisonnable pour une demande web.This is generally a reasonable response time limit for a web request. Si votre application web requiert un traitement en arrière-plan, nous vous recommandons d’utiliser des tâches Azure WebJob.If your web app requires background processing, we recommend using Azure WebJobs. L’application web Azure peut appeler des tâches WebJob et être avertie lorsque le traitement en arrière-plan est terminé.The Azure web app can call WebJobs and be notified when background processing is finished. Vous pouvez choisir parmi plusieurs méthodes pour utiliser des tâches WebJob, y compris des files d’attente et des déclencheurs.You can choose from multiple methods for using WebJobs, including queues and triggers.

Les tâches WebJob sont conçues pour le traitement en arrière-plan.WebJobs is designed for background processing. Vous pouvez effectuer autant de traitement en arrière-plan que vous le souhaitez dans une tâche WebJob.You can do as much background processing as you want in a WebJob. Pour plus d’informations sur les tâches WebJob, consultez Exécuter des tâches en arrière-plan avec des tâches WebJob.For more information about WebJobs, see Run background tasks with WebJobs.

Les applications ASP.NET Core hébergées dans App Service cessent parfais de répondre.ASP.NET Core applications that are hosted in App Service sometimes stop responding. Comment résoudre ce problème ?How do I fix this issue?

Un problème connu avec une version de Kestrel antérieure peut amener une application ASP.NET Core 1.0 hébergée dans App Service à cesser de répondre par intermittence.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. Le message suivant peut également apparaître : « L’application CGI spécifiée a rencontré une erreur et le serveur a mis fin au processus. »You also might see this message: "The specified CGI Application encountered an error and the server terminated the process."

Ce problème est résolu dans Kestrel version 1.0.2.This issue is fixed in Kestrel version 1.0.2. Cette version est incluse dans la mise à jour ASP.NET Core 1.0.3.This version is included in the ASP.NET Core 1.0.3 update. Pour résoudre ce problème, veillez à mettre à jour les dépendances de votre application afin d’utiliser Kestrel 1.0.2.To resolve this issue, make sure you update your app dependencies to use Kestrel 1.0.2. Vous pouvez également utiliser une des deux solutions de contournement décrites dans le billet de blog ASP.NET Core 1.0 slow perf issues in App Service web apps.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.

Impossible de trouver mes fichiers journaux dans la structure de fichiers de mon application web.I can't find my log files in the file structure of my web app. Comment puis-je les trouver ?How can I find them?

La fonctionnalité Cache local d’App Service affecte la structure des dossiers LogFiles et Data de votre instance App Service.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. Lorsque la fonctionnalité Cache local est utilisée, des sous-dossiers sont créés dans les dossiers de données LogFiles et Data.When Local Cache is used, subfolders are created in the storage LogFiles and Data folders. Ces sous-dossiers utilisent le même modèle d’affectation de noms « identificateur unique » + horodatage.The subfolders use the naming pattern "unique identifier" + time stamp. Chaque sous-dossier correspond à une instance de machine virtuelle dans laquelle l’application web est ou a été exécutée.Each subfolder corresponds to a VM instance in which the web app is running or has run.

Pour déterminer si vous utilisez Cache local, ouvrez l’onglet Paramètres d’application d’App Service. Si la fonctionnalité Cache local est utilisée, le paramètre d’application WEBSITE_LOCAL_CACHE_OPTION est défini sur Always.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.

Si vous n’utilisez pas la fonctionnalité Cache local et que vous rencontrez ce problème, envoyez une demande de support.If you are not using Local Cache and are experiencing this issue, submit a support request.

Le message « Tentative d'accès à un socket de manière interdite par ses autorisations d'accès » s’affiche.I see the message "An attempt was made to access a socket in a way forbidden by its access permissions." Comment résoudre ce problème ?How do I resolve this?

Cette erreur se produit généralement si les connexions TCP sortantes sur l’instance de la machine virtuelle sont épuisées.This error typically occurs if the outbound TCP connections on the VM instance are exhausted. Dans App Service, des limites sont appliquées au le nombre maximal de connexions sortantes possibles pour chaque instance de machine virtuelle.In App Service, limits are enforced for the maximum number of outbound connections that can be made for each VM instance. Pour plus d’informations, consultez Limites numériques entre les machines virtuelles.For more information, see Cross-VM numerical limits.

Cette erreur peut également se produire si vous essayez d’accéder à une adresse locale à partir de votre application.This error also might occur if you try to access a local address from your application. Pour plus d’informations, consultez Demandes d’adresses locales.For more information, see Local address requests.

Pour plus d’informations sur les connexions sortantes dans votre application web, consultez le billet de blog consacré aux connexions sortantes vers des sites web Azure.For more information about outbound connections in your web app, see the blog post about outgoing connections to Azure websites.

Comment utiliser Visual Studio pour déboguer à distance mon application web App Service ?How do I use Visual Studio to remote debug my App Service web app?

Pour obtenir une procédure détaillée montrant comment déboguer votre application web à l’aide de Visual Studio, consultez Déboguer à distance votre application web App Service.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.