2010-11-24 35 views
1

nous avons un débordement de pile dans la production ~ 2-4 fois/jourLe fichier w3p.exe s'est arrêté en raison d'un dépassement de capacité de la pile - comment identifier le problème?

Nous ne pouvons pas reproduire cela dans l'environnement de développement, nad étant donné que c'est une application web avec probablement ~ 100 utilisateurs simultanés à la fois, je ' Je me bats pour trouver la meilleure façon de suivre cela. Y a-t-il un moyen d'obtenir plus d'informations de l'observateur d'événements - heureux d'installer une forme d'outil d'écoute - même si je peux juste obtenir l'identité de thread (définie pour l'utilisateur actuel) qui aidera - bien que la dll + classe/fonction serait génial!

Ou est-ce juste une question de creuser, d'essayer de reproduire ou d'ajouter du traçage dans ??

+2

Avez-vous la trace de pile de l'exception pour essayer de localiser l'emplacement? –

+0

Qu'est-ce que vous avez dans la façon de vous connecter? Est-il configurable et pouvez-vous tourner les boutons à 11 sur cela? –

+0

nous avons un gestionnaire d'exception global - mais il s'agit d'un débordement de pile, donc contourne la gestion des exceptions standard d'asp.net (application_erro/elmah/etc) – steve

Répondre

1

Vous pouvez placer un gestionnaire d'exceptions global dans le fichier global.asax. Mettez un gestionnaire d'exceptions dans puis écrivez la trace de la pile dans le journal des événements. This article a un assez bon résumé de la façon de le faire si je suis sûr qu'il y en a beaucoup d'autres aussi. Une fois que vous savez où l'erreur se produit, vous pouvez ajouter un enregistrement supplémentaire à la fonction dans laquelle l'erreur se produit et espérer la réduire jusqu'à ce que vous trouviez le problème spécifique.

2

Il existe un outil IISDiag que vous pouvez exécuter sur les IIS de production pour analyser les plantages. Quelques informations ici:

http://support.microsoft.com/kb/919790

Il n'y a pas que des fuites - il dépotoirs quelque chose comme un fichier de base que vous pouvez analyser plus tard.

+0

merci, cela vous donnera une chance – steve

2

Appuyez sur Elmah pour la consignation des exceptions. L'ajout d'une journalisation d'exceptions non gérées à l'aide d'Elmah ne nécessite que l'insertion de l'assembly dans le dossier bin de l'application et l'ajout de la section Elmah dans la configuration Web pour un scénario de journalisation de base.

Si les journaux ne suffisent pas pour déterminer la source d'erreur, vous pouvez créer des vidages mémoire de l'état de l'application défaillante à l'aide de DebugDiag. Il y a un guide sur comment l'utiliser here.