none
Freeze d'un site Web RRS feed

  • Question

  • Bonjour,

    J'ai un site web ASP.NET qui freeze de temps en temps : plus aucun utilisateur ne peut afficher quelque page que ce soit. Pour l'instant, je recycle l'application sur IIS, mais je n'arrive pas à trouver d'explication plausible pour ce comportement.
    Il n'y a aucune erreur de journalisée nulle part (ni dans les journaux windows, ni dans les journaux iis, ni dans les journaux internes de mon application). J'ai déjà mis du mien pour optimiser le code, raccourcir les temps et le nombre d'accès à la base de données. Il n'y a pas de verrous positionné sur la base (SQL Server) lors des plantage. Cependant, les requêtes s'accumulent sur la base de données. Je sais donc que le code .NET commence à être exécuté.
    Je ne sais pas déterminer d'où peut provenir le problème. Est-ce que quelqu'un connaitrait ce problème ou un problème similaire pour que je puisse orienter mes recherches.
    Le site est executé seul dans son pool d'application.

    Olivier MARTY
    Olivier MARTY
    mardi 22 septembre 2009 08:31

Réponses

  • En fait j'ai trouvé en agrégeant les réponses de différents blog.
    Il y a un bug du Garbage Collector sur le framework 2.0 sp 2 dont le thread peut rentrer en deadlock avec les threads dont il doit nettoyer les objets (avec le thread principal notamment) :

    J'ai donc rajouté la clef suivante dans le web.config qui permet de gérer le garbage collector dans le thread principal de l'application :

    <configuration>
     <runtime>
      <!--
       Sert à mettre le processus de collecte des objets dans le thread principal de l'application
       pour éviter les interblocages de processus. En principe, ceci doit ralentir l'application
       lors de la collecte.
      -->
      <gcConcurrent enabled="false"/>
      
     </runtime>
    </configuration>

    Et ça marche !!!
    Olivier MARTY
    • Marqué comme réponse Warny jeudi 8 octobre 2009 08:10
    jeudi 8 octobre 2009 08:10

Toutes les réponses

  • Bonjour,

    Qu'appellez par "freeze" ? Que se passe-t-il au niveau des clients ? Sur le votre serveur le processus w3wp fonctionne-t-il à 100% ?

    Cordialement
    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    lundi 28 septembre 2009 19:21
    Modérateur
  • Bonjour,
    Le serveur ne répond plus ux demandes des clients. Le client se met en attente de la réponse du serveur indéfiniment.
    Le processus W3WP ne donne aucun signe de ce plantage, il ne monte pas à 100% et ne créé aucun log.
    J'ai placé un log sur les procédure OnBeginRequest et OnEndRequest du global.asax pour voir s'il s'agissait du plantage d'une page en particulier... sans succès, toutes les pages chargées le sont complètement. Lorsque le site arrête de répondre, il arrête également décrire dans mon journal.

    Olivier MARTY
    vendredi 2 octobre 2009 08:05
  • Bonjour,

    Avez-vous essayé de mettre votre application sur un autre serveur ?

    Cordialement
    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    mardi 6 octobre 2009 21:50
    Modérateur
  • En fait j'ai trouvé en agrégeant les réponses de différents blog.
    Il y a un bug du Garbage Collector sur le framework 2.0 sp 2 dont le thread peut rentrer en deadlock avec les threads dont il doit nettoyer les objets (avec le thread principal notamment) :

    J'ai donc rajouté la clef suivante dans le web.config qui permet de gérer le garbage collector dans le thread principal de l'application :

    <configuration>
     <runtime>
      <!--
       Sert à mettre le processus de collecte des objets dans le thread principal de l'application
       pour éviter les interblocages de processus. En principe, ceci doit ralentir l'application
       lors de la collecte.
      -->
      <gcConcurrent enabled="false"/>
      
     </runtime>
    </configuration>

    Et ça marche !!!
    Olivier MARTY
    • Marqué comme réponse Warny jeudi 8 octobre 2009 08:10
    jeudi 8 octobre 2009 08:10