2008-11-19 5 views
63

J'ai cherché des informations à ce sujet en vain. Le contexte de pourquoi j'ai besoin de ceci est another question I asked here. Plus spécifiquement, la création/mise à jour/suppression de fichiers dans App_Data provoque-t-elle un recyclage du pool?Qu'est-ce qui provoque le recyclage d'un pool d'applications dans IIS?

Si quelqu'un pouvait fournir une liste détaillée des causes d'un recyclage, ce serait génial.

MISE À JOUR: Comme deux utilisateurs déjà remarqué, je serais également heureux d'obtenir une réponse en spécifiant les raisons du recyclage de l'AppDomain uniquement et pas de l'ensemble de la piscine.

+0

vous sûr qu'elle est la piscine et pas seulement le domaine de l'application? – stephbu

+0

Eh bien, l'article de Tess sur les réinitialisations d'AppDomain est assez canonique - elle travaille pour l'équipe ASP.NET. – stephbu

Répondre

29

Deux effets différents: le processus AppPool est l'hôte de domaines d'application potentiellement multiples. Typiquement, ceci peut être recyclé par un certain nombre d'effets, par ex. heure - toutes les heures, manque de demandes, utilisation de la mémoire, etc. Configuré dans IIS Config Manager. AppDomain - l'instance hébergée de votre racine d'application, peut être cyclée plus fréquemment sans affecter d'autres AppDomains dans l'AppPool. poste de Tess sur le recyclage AppDomain est assez perspicace

http://blogs.msdn.com/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

Vous écrivez à un dossier surveillé pour recompilation - cela déclenchera la recréation de appdomain à un moment donné.

Le journal des événements vous aidera à déterminer la cause du recyclage.

2

Cela peut se produire quotidiennement en fonction des préférences ou lorsque la mémoire virtuelle maximale pour le processus a été dépassée.

+0

Je comprends ces causes. Je posais plutôt la question de savoir quelle application (non liée à IIS) changerait entraînerait un recyclage. – Slavo

+0

"changé" pour être lu comme "changements" – Slavo

+0

Ahh, ok. La modification du dossier app_data ne doit pas être recyclée, mais vous pouvez envisager d'écrire dans un journal lorsque le programme applicaiton_start se produit afin que vous puissiez en être certain. –

36

L'article que vous avez aimé dans l'autre article a fait un très bon travail.

immédiate Recyclage

  • Web.config change
  • Machine.config change
  • Global.asax change
  • Bin change
  • App_Code change

retardée Recyclage

Peut se produire avec plusieurs modifications dans d'autres emplacements, en général, je l'ai seulement remarqué avec des modifications aux fichiers .aspx ou .cs/.vb. Ajout de texte temporaire, CSV ou d'autres fichiers n'a pas entraîné de problèmes pour moi.

REMARQUE: Il s'agit de tous les recyclages de domaine d'application, et non de recyclages réels du pool. Généralement, l'application POOL ne recycle que sur la base des paramètres définis dans IIS (nombre de demandes, limite de mémoire, temps d'inactivité ou redémarrage planifié).

+1

Merci, Mitchel. Mais il ne dit rien sur App_Data en particulier. Tandis que ici est dit tous les dossiers App_: http://weblogs.asp.net/owscott/archive/2006/02/21/ASP.NET-v2.0-_2D00_-AppDomain-recycles_2C00_-more-common-than-avant. aspx # 440333 – Slavo

+0

Lequel je crois - ce sont exactement les incohérences, à cause de laquelle je n'étais pas capable de trouver une seule réponse. – Slavo

+0

Slavo, c'est vrai, cependant, je serais prudent quant aux dates des articles, car je sais que divers Service Packs ont modifié ce comportement à divers points de la ligne. –

1

Il s'agit d'un paramètre que vous pouvez manipuler pour recycler le pool d'applications en fonction du nombre de minutes d'exécution ou du nombre de requêtes traitées.

Il sera également recycler sur les changements web.config et d'autres choses qui ont été postées ici.Une réinitialisation des services Internet (IIS) fera également l'affaire, tout comme l'arrêt/le démarrage des services.

26

Vous pouvez activer le plein AppPool Recycler les journaux l'événement:

cscript adsutil.vbs Set w3svc/AppPools/DefaultAppPool/LogEventOnRecycle 255 

Vous pouvez également jeter un oeil à cet article de blog Scott Guthrie: http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx qui montre comment écrire du code dans Global.asax à consigner la cause réelle d'un événement Application.End.

Cela a été très utile pour nous à diagnostiquer plusieurs problèmes screwy - un dans partictual était une application qui a été écrit les fichiers journaux dans le répertoire wwwroot - trop de changements de fichiers résultant dans un recyclage ...

+1

FYI: adsutil.vbs devrait déjà exister sur la machine. Sur mon ordinateur, il se trouve dans c: \ Inetpub \ AdminScripts \ et c: \ WINDOWS \ ServicePackFiles \ i386. –

+0

@Christopher_G_Lewis pouvez-vous élaborer sur le problème que vous avez indiqué, en écrivant des fichiers journaux dans le répertoire wwwroot - trop de changements de fichiers entraînant un recyclage. –

+0

@ Bhagirath-N-Sai - IIS recyclera le pool d'applications si le FCN détecte certaines modifications - voir [Raisons communes pour lesquelles votre pool d'applications peut être recyclé de façon inattendue] (http://blogs.msdn.com/b/johan/archive/ 2007/05/16/common-raisons-pourquoi-votre-application-pool-may-unexpectedly-recycle.aspx) –

Questions connexes