ASP.NET -> Memory Exception, introuvable j'en peut plus ! - C#/.NET managed - Programmation
Marsh Posté le 24-08-2006 à 16:02:42
phénomère classique : allimentation d'objets "application" ou "session" générés "inproc" et en oubliant de les détruire. rien de tel pour saturer la mémoire.
ça ou aussi une belle boucle sans condition de sortie, ça peut rapidement bouffer la mémoire (ceci dit, on a généralement un stack overflow avant)
sinon, y'a pas de technique particulière.
tu active "debug", et tu regardes où ça pète.
si même en debug t'as pas de détail sur le lieu du pétage de plomb, tu fout des logs à l'entrée à la sortie de chaque fonction, et tu affine jusqu'à ce que tu isoles le bloc qui merde.
Marsh Posté le 24-08-2006 à 16:14:01
A mon avis sa doit venir des sessions mais le soucis est que sur le serveur web j'ai 7 applications qui tourne, donc c'est mission impossible que de foutre des logs dans chacune d'elle.
Quel est ma méthode avec le debug ?
Marsh Posté le 24-08-2006 à 16:16:24
dans le web.config, tu mets "debug=true" dans la partie <configuration>
Marsh Posté le 24-08-2006 à 16:17:08
par contre, vérifierles propriétés de custom error, parceque quand ça va planter ça va afficher le code autour de l'erreur, donc pour peut qu'il y ait des infos sensibles dans ton code et c pas top
Marsh Posté le 24-08-2006 à 16:22:22
Sa m'arrange que sa m'affiche le code autour de l'erreur.
Mais le truc c'est qu'il est impossible que je tombe au moment pil poil ou sa plante, etant donné que sa plante au hasard parfois au bout de 3heures, parfois au bout de 5heures
Marsh Posté le 24-08-2006 à 16:24:58
Bah j'etais deja sur debug, et mon customeerror est bien sur remoteonly
Mais rien en fait quand mon serveur plante il ne me donne meme pas de quel application viens le probleme
Marsh Posté le 24-08-2006 à 16:36:29
Nan je dev en local (la j'ai aucun probleme) puis j'upload le tout sur un serveur de prod (je me connecte a distance dessus)
Et c'est sur ce dernier que y'a soucis.
ps : quand j'ai l'erreur outOfMemoryException sur le serveur, je doit faire un iisreset pour que sa rentre dans l'ordre
Marsh Posté le 24-08-2006 à 16:50:09
donc, si tu te connectes à distance, c'est normale qu'en mode "remoteonly" tu ne vois pas l'erreur.
essaie de passer à "off" le temps de trouver l'erreur, mais surtout, vérifie que t'as pas de mot de passe ou de noms de répertoires qui se baladent en dur dans ton code.
Marsh Posté le 24-08-2006 à 16:53:35
Ok je vais essayé en Off pour voir si il m'offre quelquechose a me mettre sous la dent
Je te dit ca des qu'il plante a nouveau
Marsh Posté le 24-08-2006 à 17:09:44
par contre, je pense à un truc con...
t'es pas sorti de l'auberge là.
parceque si une fois l'erreur levée iis part en live, ça veut dire qu'en debug ou non, tu ne verras pas où est l'erreur.
qu'est-ce qui t'empêche de foutre des logs un peu partout dans le site ? là au moins tu verrais le dernier truc exécuté avant de planter, donc une idée précise d'où ça plante
Marsh Posté le 24-08-2006 à 17:15:18
Comment ca iis part en live ?
En fait sa me souleve une exception, comme ca le ferais pour d'autre, donc je pense que je verais l'erreur
Pour ta derniere intervention, quel genre de log tu parle ?
Et tu sais mettre des logs dans 7 applications contenant une 40aine de pages aspx chacune sa fait beaucoup
Marsh Posté le 24-08-2006 à 17:20:16
déjà, tu sais quelle appli c'est ?
ou si c'est une des 7 qui provoque le problème, sans plus de précision ?
pour les logs, je parle d'un truc de ce genre :
Code :
|
Et tu fais des appels à log.writeline() un peut partout dans ton code.
Marsh Posté le 24-08-2006 à 17:23:20
MagicBuzz a écrit : déjà, tu sais quelle appli c'est ?
|
Bah en fait je suis pas sur a 100% mais j'ai une idée de l'appli.
Pas bete ta classe permet de créer un fichier dans lequel le loguerais moi même des messages tout au long de l'application, pas bete
Bon bah j'attend que sa plante, j'essaye la premiere solution, sinon j'essayerais la seconde
Marsh Posté le 24-08-2006 à 17:26:35
surtout, l'intérêt du truc, c'est qu'après, iis plante à chaque page si j'ai bien compris, jusqu'à ce qu'il redémarre. donc si tu regardes dans le fichier la dernière ligne, c'est à priori juste après que la saturation de mémoire est arrivée. tu as donc une bonne chance pour que ce soit au niveau de ta "fuite" mémoire (mais rien n'est sûr, c'est ça qui est con)
Marsh Posté le 24-08-2006 à 15:58:00
Bonjour a vous,
Je me trouve face a un soucis que je n'arrive pas à regler.
Nous bossons sur des appli web asp.net/c# + sql server des plus classiques.
Nous disposons d'un server pour le web, et d'un serveur pour la BDD
Jusqu'ici tout va bien.
Tout fonctionnais a merveille, mais de retour de congés, je me retrouve avec le serveur web instable, generant des erreurs "System:OutOfMemoryException" mais je ne sais pas comment detecter la cause de l'erreur.
Quelqu'un d'entre vous conaittrais un outil de monitoring ou une technique me permettant de localiser l'origine de la chose ?
Merci d'avance
ps : j'ajouterais que niveau hardware le serveur WEB est un BiXeon 3.00Ghz et 2Go de RAM