Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3001 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  ASP.NET -> Memory Exception, introuvable j'en peut plus !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ASP.NET -> Memory Exception, introuvable j'en peut plus !

n°1430752
hassbak
Posté le 24-08-2006 à 15:58:00  profilanswer
 

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

mood
Publicité
Posté le 24-08-2006 à 15:58:00  profilanswer
 

n°1430756
MagicBuzz
Posté le 24-08-2006 à 16:02:42  profilanswer
 

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.


Message édité par MagicBuzz le 24-08-2006 à 16:04:02
n°1430762
hassbak
Posté le 24-08-2006 à 16:14:01  profilanswer
 

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 ?

n°1430764
MagicBuzz
Posté le 24-08-2006 à 16:16:24  profilanswer
 

dans le web.config, tu mets "debug=true" dans la partie <configuration>

n°1430766
MagicBuzz
Posté le 24-08-2006 à 16:17:08  profilanswer
 

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 ;)

n°1430770
hassbak
Posté le 24-08-2006 à 16:22:22  profilanswer
 

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 :(

n°1430775
hassbak
Posté le 24-08-2006 à 16:24:58  profilanswer
 

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 :(

n°1430785
MagicBuzz
Posté le 24-08-2006 à 16:32:55  profilanswer
 

t'es en local sur le serveur ou pas ?

n°1430790
hassbak
Posté le 24-08-2006 à 16:36:29  profilanswer
 

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

n°1430801
MagicBuzz
Posté le 24-08-2006 à 16:50:09  profilanswer
 

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.

mood
Publicité
Posté le 24-08-2006 à 16:50:09  profilanswer
 

n°1430806
hassbak
Posté le 24-08-2006 à 16:53:35  profilanswer
 

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 ;)

n°1430832
MagicBuzz
Posté le 24-08-2006 à 17:09:44  profilanswer
 

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


Message édité par MagicBuzz le 24-08-2006 à 17:10:21
n°1430839
hassbak
Posté le 24-08-2006 à 17:15:18  profilanswer
 

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 :(

n°1430846
MagicBuzz
Posté le 24-08-2006 à 17:20:16  profilanswer
 

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 :
  1. using System;
  2. namespace bci
  3. {
  4. /// <summary>
  5. /// Summary description for log.
  6. /// </summary>
  7. public class log
  8. {
  9.  private string _filename;
  10.  public log(string filename)
  11.  {
  12.   this._filename = filename;
  13.  }
  14.  public void writeline(string message)
  15.  {
  16. #if DEBUG
  17.   System.IO.TextWriter fil = new System.IO.StreamWriter(this._filename, true, System.Text.Encoding.ASCII);
  18.   fil.WriteLine(message);
  19.   fil.Flush();
  20.   fil.Close();
  21.   fil = null;
  22. #endif
  23.  }
  24. }
  25. }


 
 
Et tu fais des appels à log.writeline() un peut partout dans ton code.

n°1430860
hassbak
Posté le 24-08-2006 à 17:23:20  profilanswer
 

MagicBuzz a écrit :

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 :
  1. using System;
  2. namespace bci
  3. {
  4. /// <summary>
  5. /// Summary description for log.
  6. /// </summary>
  7. public class log
  8. {
  9.  private string _filename;
  10.  public log(string filename)
  11.  {
  12.   this._filename = filename;
  13.  }
  14.  public void writeline(string message)
  15.  {
  16. #if DEBUG
  17.   System.IO.TextWriter fil = new System.IO.StreamWriter(this._filename, true, System.Text.Encoding.ASCII);
  18.   fil.WriteLine(message);
  19.   fil.Flush();
  20.   fil.Close();
  21.   fil = null;
  22. #endif
  23.  }
  24. }
  25. }


 
 
Et tu fais des appels à log.writeline() un peut partout dans ton code.


 
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 :)

n°1430869
MagicBuzz
Posté le 24-08-2006 à 17:26:35  profilanswer
 

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)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  ASP.NET -> Memory Exception, introuvable j'en peut plus !

 

Sujets relatifs
[Résolu][C#.NET] Supprimer un fichier, acces refusé ??[C Sharp] Expressions Régulières sous ASP.Net
[C#.NET] Compresser plusieurs fichiers avec GZipStream, help[mySQL] L'exception SocketException n'a pas été gérée ...
[C#.Net] Bouton pour télécharger un fichier[Resolu][C#.NET] Appel methode static impossible ?
[C#.Net] A la recherche d'un outil de charting (graphiques)[C#.NET] Remplir un DataGrid a partir d'un répertoire, help please !
[Résolu] [C#.Net] Passer un argument à partir d'une page Web 
Plus de sujets relatifs à : ASP.NET -> Memory Exception, introuvable j'en peut plus !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR