Notre site Web est en .NET mais avec quelques anciennes bibliothèques ASP et 32bits. Cela fonctionnait bien depuis un moment (2 ans). Mais pour le mois passé, nous avons vu l'erreur suivante sur notre serveur IIS7, que nous n'avons pas pu retrouver et corriger:IIS7: application w3wp.exe défaillante, quelle est la cause de ces accidents?
"Application défectueuse w3wp.exe, version 7.0.6001.18000, horodatage 0x47919413, module défaillant kernel32.dll, version 6.0.6001.18215, horodatage 0x4995344f, code d'exception 0xe053534f, correction d'erreur 0x0002f328, ID de processus 0x% 9, heure de début de l'application 0x% 10. "
Nous sommes en mesure de reproduire l'erreur:
L'une de nos pages .aspx commence le chargement, l'exécution du code et des requêtes (nous avons Response.Flush() sur toute la page pour suivre où les pauses de code), puis il s'arrête soudainement et nous obtenons l'erreur ci-dessus dans IIS.
La page arrête le chargement et, sans Response.Flush(), il ne rediriger vers notre page de error.aspx (tel que configuré dans web.config)
L'erreur ne se produit pas tout le temps. Parfois, cela arrive 3 fois de suite, alors ça marche bien pendant 15 minutes non-stop avec une redirection correcte vers error.aspx. L'erreur que nous obtenons alors est un classique: "soit BOF ou EOF est vrai, ou l'enregistrement en cours a été supprimé." Lorsque l'erreur se produit, la page se bloque et toutes les autres sessions sur le même ordinateur de n'importe quel navigateur ont des pages Web suspendues (BTW, nous n'autorisons qu'un processus de travail pendant que nous testons). À partir d'autres ordinateurs, le site se charge bien.
Je peux recycler le pool d'applications, tuer w3wp.exe, redémarrer IIS. Rien ne va faire. La seule façon de charger à nouveau la page est de redémarrer MS SQL qui gère nos états de session. Je ne sais pas pourquoi c'est, mais nous avons deviné que les cookies de session sur les navigateurs des utilisateurs pointe vers un thread qui n'a pas été terminé correctement (en raison du plantage ci-dessus) et IIS attend qu'il se termine pour traiter plus de code (?). Si quelqu'un peut mieux expliquer cela, ce serait vraiment utile. Y a-t-il un timeout que nous pouvons définir pour "terminer" les threads? Est-ce un problème lié à MS SQL?
J'ai aussi regardé les usages de la mémoire privée et virtuels, parce que je pense que notre code n'est pas le plus efficace et je suis certain qu'il nous reste des fuites de mémoire. Cependant, j'ai vu la page tomber en panne même si les souvenirs privés et virtuels étaient encore assez faibles (moins de 100 Mo chacun).
J'ai utilisé Debug Diag et WinDbg comme indiqué ici: http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx, mais nous ne sommes pas en mesure de faire fonctionner windbg, c'est ce que nous essayons de faire pour le moment.
Si quelqu'un pouvait nous aider ou nous diriger vers la bonne direction ce serait vraiment génial, merci.
Vous feriez mieux de dire clairement ce problème WinDbg vous avez rencontré. –