IIS7: application Défaillante w3wp.exe, ce qui est la cause de ces plantages?
Notre Site web est en .NET, mais avec quelques vieux ASP et 32bits bibliothèques trop en elle. Il a très bien marché pendant un certain temps (2 ans). Mais depuis le mois dernier, nous avons vu le message d'erreur suivant sur notre serveur IIS7, qui nous ont pas été en mesure de repérer et de corriger:
"Application défaillante 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, décalage d'erreur 0x0002f328, l'id du processus 0x%9, démarrage de l'application temps 0x%10."
Nous sommes en mesure de reproduire l'erreur:
-
Un de nos .Pages ASPX commence à charger, l'exécution de code et de requêtes (nous avons la réponse.flush() sur toute la page pour suivre le code de pauses), puis il s'arrête brusquement et nous obtenir l'erreur ci-dessus dans IIS.
-
La page de chargement s'arrête et, sans réponse.flush(), ce n'est pas la redirection vers notre erreur.page aspx (comme configuré dans le web.config)
-
L'erreur ne se produit PAS tout le temps. Parfois, il arrive 3 fois de suite, puis ça fonctionne pendant 15 minutes non-stop avec une bonne redirection de l'erreur.aspx.
-
L'erreur nous obtenons alors est un classique: "BOF ou EOF est Vrai, ou si l'enregistrement a été supprimé."
-
Lorsque l'erreur se produit, la page se bloque et tous les autres de la session sur le même ordinateur à partir de tous les navigateurs ont accroché des pages web (BTW, nous ne permettons 1 processus de travail alors que nous sommes en essai). À partir d'autres ordinateurs, le site charge très bien.
-
Je peux recyclage de l'Application de la Piscine, de tuer w3wp.exe, redémarrer IIS. Rien ne pourra le faire. La seule façon de réussir à charger la page est à nouveau pour Redémarrer MS SQL qui s'occupe de nos États de la Session. Je ne sais pas pourquoi, mais nous avons deviné que les Cookies de Session pour les utilisateurs de navigateurs points à un thread qui n'a pas été terminée correctement (en raison de la collision) et IIS est en attente pour elle de mettre fin à des processus de plus de code (?). Si quelqu'un peut expliquer ce mieux, ce serait vraiment utile. Est-il un délai d'attente qui nous pouvons mettre à "mettre fin" threads? Est-il un MS SQL liées problème?
J'ai aussi regardé le Privé et la Mémoire Virtuelle usages, 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 crash même si les deux Privés Virtuels et les Souvenirs étaient encore assez faible (moins de 100 MO chacun).
J'ai utilisé de Débogage 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 windbg travail, c'est ce que nous essayons de faire à l'instant.
Si quelqu'un pouvait nous aider ou de nous orienter vers la bonne direction, ce qui serait vraiment génial, je vous remercie.
- Vous feriez mieux de dire clairement ce qu'WinDbg problème que vous avez rencontré.
Vous devez vous connecter pour publier un commentaire.
"BOF ou EOF est Vrai, ou si l'enregistrement a été supprimé" signifie que la table est vide et que vous essayez de faire un MoveNext. Donc vérifier eof avant de faire toutes les démarches.
IIS est connu pour lancer des erreurs de noyau dans w3wp.exe comme celui-ci. Toutes vos erreurs dans l'état de session sont juste les symptômes de l'écrasé de processus. Plusieurs pools d'APPLICATION n'aidera pas beaucoup - ils que la propagation de l'erreur autour de.
J"pari il est SQL blocages en raison de votre environnement utilisateur en train de changer. Cela va causer un 10 secondes de retard que SQL tente de déterminer la requête à tuer. On gagne, on perd. Le perdant obtient en retour un pointeur vers une façon inattendue table vide et vous essayez de déplacer un et l'effondrement ultérieur. Vous avez peut-être pu point de votre base de données pour une connexion ODBC et activer le suivi, ou trouver une façon d'obtenir SQL pour l'enregistrer.
J'ai eu les mêmes symptômes que ci-dessus en Perl. J'ai été en mesure de faire un wrapper fn() pour faire toutes les requêtes SQL et d'enregistrer toutes les sql, + params et toutes les erreurs sur le disque dur pour traquer le problème. Il a été blocages, puis nous avons été en mesure de code en auto-retry, et finalement, nous avons recodé la requête de l'ordre et de numérisées colonnes pour éliminer les blocages.
C'est tout à fait possible que l'un de vos référencé/lien assemblées au hasard, quelque part, a disparu corrompu (cela peut arriver) sur le disque. Pouvez-vous essayer une reproduire le problème sur une nouvelle machine avec les mêmes stats, les nouvelles installations de la dernière xyz pilotes que vous utilisez?
J'ai résolu un mystérieux problème qui m'a pris des mois pour isoler de cette façon. Il semblait propre, les nouvelles machines avec les mêmes caractéristiques et les prérequis des pilotes serait très bien fonctionner seulement quelques anciennes machines avec les mêmes specs n'avaient pas de façon uniforme. J'ai fini par désinstaller tout (IIS, ASP.NET, .NET, base de données et le client) et de partir de zéro. La fin cause, quand j'isolé, c'était que la db client pilote a été endommagée sur les machines plus anciennes (et toutes les machines plus anciennes ont été clones les uns des autres, donc je suppose qu'ils ont été clonés après la corruption s'est produite), et il semblait être déconner avec l' .NET espace mémoire, même quand je n'étais pas de l'appeler directement. J'ai même pas encore répondu à ma "m'aider à déboguer ce monstre" post avec cette réponse parce que je doute que l'on pourra jamais aider personne.
Nous avons commencé à recevoir ce message d'erreur après l'installation de mises à jour de windows sur un Serveur Windows 2008R2 de la machine. Windows Service d'Activation des Processus (A) installe quelques-unes des liaisons de site supplémentaires qui ont causé des problèmes pour notre configuration.
Nous avons retiré net.tcp, net.pipe, net.msmq, et msmq.formatname liaisons à partir de notre site web et n'a plus eu de l'application défaillante exception.
C'est probablement un cas limite, mais juste au cas où quelqu'un vient ici et qu'ils utilisent des MVCMailer , j'ai été faire cette même erreur en raison de la .SendAsync() la méthode sur les expéditeurs.
Je suis passé tout à .Send() et le bruit s'est arrêté.
Voir cette SORTE de réponse façons d'utiliser la messagerie asynchrone et d'éviter l'accident (a priori, je n'ai pas personnellement sa mise en œuvre)