58 votes

W3WP.EXE l'utilisation de 100% de CPU - par où commencer?

Un ASP.NET web app en cours d'exécution sur IIS6 régulièrement les pousses de la CPU à 100%. C'est le W3WP qui est responsable de presque tous l'utilisation du PROCESSEUR lors de ces épisodes. Le CPU reste épinglé à 100% n'importe où de quelques minutes à plus d'une heure.

C'est sur un serveur de test et le site ne reçoit que très peu de circulation de testeurs à ce point.

Nous avons pointillés profiler sur le serveur, mais il a été unenlightening.

Où peut-on commencer à trouver ce qui est à l'origine de ces épisodes et ce code est de garder le CPU occupé pendant tout ce temps?

38voto

RickNZ Points 12053
  1. Standard de Windows compteurs de performance (cherchez d'autres corrélation de l'activité, tels que le nombre de requêtes GET, excessive réseau ou disque I/O, etc); vous pouvez les lire à partir du code ainsi que de l'analyseur de performances (pour déclencher la collecte de données si l'utilisation de l'UC dépasse un seuil, par exemple)
  2. Compteurs de performance personnalisés (en particulier pour le temps hors zone demandes et d'autres appels où le temps d'exécution est incertaine)
  3. Le test de charge, en utilisant des outils tels que Visual Studio Team Test ou WCAT
  4. Si vous pouvez tester sur ou la mise à niveau de IIS 7, vous pouvez configurer le suivi des demandes ayant Échoué à générer une trace si les demandes de prendre plus d'une certaine quantité de temps
  5. Utilisation logparser pour voir laquelle les demandes sont arrivés à l'époque de la CPU pic
  6. Des revues de Code / walk-through (en particulier, pour des boucles qui ne peut pas résilier correctement, comme si une erreur se produit, ainsi que les verrous et les éventuels problèmes de threading, telles que l'utilisation de la statique)
  7. CPU et le profilage de la mémoire (peut être difficile sur un système de production)
  8. Process Explorer
  9. Le Moniteur De Ressources De Windows
  10. L'enregistrement détaillé des erreurs
  11. La coutume de la journalisation du suivi, y compris les temps d'exécution de détails (peut-être conditionnelle, basée sur les CPU-utilisation de la perf contre)
  12. Sont les erreurs qui se passe lorsque le pool d'applications recycle? Si oui, cela pourrait être un indice.

12voto

Michael Bray Points 7397

C'est pas vraiment une réponse, mais vous pourriez avoir besoin d'aller vieille école et de capturer une image de l'instantané du processus IIS et le débogage. Vous pourriez également vouloir vérifier Tess Ferrandez's blog - elle est un coup de pied un** microsoft ingénieur d'escalade et de son blog se concentre sur le débogage de windows ASP.NET mais le blog est pertinent pour le débogage de windows en général. Si vous sélectionnez l'ASP.NET tag (qui est ce que j'ai lié à) ensuite, vous trouverez plusieurs articles qui sont similaires.

4voto

user246874 Points 41

Si votre CPU est de dopage à 100% et rester là, il est tout à fait probable que vous avez un blocage ou une boucle infinie. Un profileur semble être un bon choix pour trouver une boucle infinie. Les blocages sont beaucoup plus difficiles à repérer, cependant.

4voto

sky100 Points 381

Process Explorer est un excellent outil pour le dépannage. Vous pouvez essayer de trouver le problème de haute CPU usage. Il vous donne un aperçu de la façon dont votre application fonctionne.

Vous pouvez également essayer Procdump pour vider le processus et d'analyser ce qui s'est réellement passé sur le CPU.

1voto

RockySanders99 Points 93

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X