29 novembre 2007 11:06
par
gaulu1
W3WP à 100% de CPU
Sur mon projet actuel nous étions à l'étape de test de charge sur une application Web et de façon aléatoire, quelques fois après 5 minutes, d'autre fois après 30 minutes le processus w3wp (IIS) montait à 100% de CPU et restait là tant qu'on ne tuais pas le processus. Il arrivait même que quelques fois après 2hres de test de charge, que le problème ne survienne pas.
Sûrement pas quelques chose d'évident à trouver.
Après plusieurs jours à essayer d'identifier la cause, je me suis adressé à mes amis "Regional Director" et selon leurs bons conseils, voici comment j'ai identifié le problème.
1. J'ai téléchargé et installé "Debugging Tools for Windows"
(http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx)
2. J'ai produit un dump lorsque le problème était présent.
Dans mon cas lorsque le CPU a bloqué à 100% j’ai exécuté la commande suivante :
Adplus –iis –hang (cette commande a produit un stack dump)
3. J'ai démarré WinDbg et ouvert le fichier de dump (File->Open Dump File)
4. J'ai exécuté les commandes suivantes
.loadby sos mscorwks
~*e !clrstack
Dans mon cas, ça l’a listé le stack trace de tous les thread en cours et j’ai pu retrouver les 30 threads qui correspondaient au 30 users que je simulais. Surprise, les 30 threads étaient tous bloqués à la même ligne de code. J'ai ainsi pu identifié la ligne de code qui était fautive.