2010-05-31 11 views
0

nous avons une application asp.net en production où w3wp.exe prend 100% de CPU (4 cœurs - 4 threads à 25%) et la charge CPU ne descend jamais jusqu'à ce que nous recyclons le pool d'applications (l'application est seule dans l'application bassin). Notre journal des erreurs n'a rien, aucune exception n'est émise (ou du moins nous ne les attrapons pas) donc nous suspectons que c'est un problème de code (boucle/blocage infini). Le problème ne se pose qu'après quelques heures de fonctionnement avec une charge élevée (plusieurs milliers d'utilisateurs).w3wp.exe dans l'application de production ASP.NET utilise 100% CPU. Comment trouver le problème?

Est-il possible de profiler l'un des threads EXISTING qui provoque la charge CPU? Après avoir jeté un coup d'oeil à DotTrace Profiler de JetBrains semble que ce n'est pas possible pour les limitations de l'API Profiling et de l'homme, nous n'avons pas à reproduire le problème dans notre environnement de test. L'application utilise SQL Server 2005, LINQ2SQL et API System.Transactions.

Une suggestion pour trouver le problème?

Répondre

2

Créez un vidage de la mémoire de l'application en cours, puis téléchargez WinDbg and SoS (Son of Strike) jetez un oeil au profil de la mémoire de l'application en cours pour voir ce qui consomme le plus de mémoire, où les problèmes de performance sont. Si vous disposez d'une application .NET 4, vous pouvez charger l'image mémoire dans Visual Studio 2010 et obtenir un aperçu plus visuel de ce qui consomme de la mémoire. Vous serez en mesure de voir si les processus sont en cours d'exécution et de pouvoir les évaluer par rapport à l'utilisation du processeur.

Le dnr tv episode - Tess Ferrandez on Debugging in .NET est une bonne introduction sur l'utilisation de WinDbg pour le débogage d'une application ASP.NET.

+3

Les versions récentes de Windows vous permettent d'effectuer une sauvegarde d'un processus à l'aide du gestionnaire de tâches. – Steven