IIS: délai d'inactivité vs recyclage

97

Dans IIS, il existe deux domaines (enfin, plus de deux) où le recyclage peut se produire:

  1. Dans la section "Modèle de processus" → "Délai d'inactivité" (20 minutes par défaut)

et

  1. Dans la section "Recycler" → "Intervalle de temps normal" (1740 minutes par défaut)

Mes questions sont:

  1. Quelles sont les différences entre les deux méthodes?
  2. Quelles sont les implications négatives des réglages à 0?
Ricky
la source

Réponses:

97

Le délai d'inactivité est que si aucune action n'a été demandée à partir de votre application Web, le processus abandonnera et libérera tout de la mémoire

Le recyclage est une action forcée sur l'application où votre traitement est fermé et redémarré, à des fins de fuite de mémoire et de santé du système

L'impact négatif des deux est généralement l'utilisation de votre session et l'état de votre application est perdu si vous jouez avec Recycle à un moment plus rapide (les utilisateurs connectés, etc. seront déconnectés, s'ils étaient sur le point de «vérifier» tout aurait été perdu "c'est pourquoi le recyclage est à une valeur de temporisation si élevée, le délai d'inactivité n'a pas d'importance car personne n'est connecté de toute façon et compte 20 minutes sans action, ils ne font pas encore de" shopping "

Le point positif serait de se débarrasser du délai d'inactivité car votre site Web répondra plus rapidement à sa "première" réponse s'il ne s'agit pas d'un site très actif où un utilisateur devrait attendre qu'il se charge si vous avez 1 utilisateur toutes les 20 minutes. dire. Donc, un site Web qui obtient son moins de 1 fois en 20 minutes, vous voudrez en fait augmenter cette valeur car le site Web doit se recharger à partir de zéro pour chaque utilisateur. mais si vous définissez ceci sur 0 pendant une longue période, toute fuite de mémoire dans le code pourrait, pendant un certain temps, prendre entièrement le contrôle du serveur.

MichaelEvanchik
la source
Merci! Ça a du sens. Mon principal dilemme est que le "premier chargement" prend très longtemps. Je pensais que si je réglais les deux sur 0, je peux contourner cela. Cependant, le problème de la fuite de mémoire est un problème. Existe-t-il un moyen de «recycler» mais ensuite de «forcer» une demande pour que le «premier accès» soit terminé et terminé immédiatement après le recyclage? Ou peut-être planifier le recyclage à 2 heures du matin, puis planifier un «premier accès» à 2 h 30? Y a-t-il un moyen dans IIS de faire cela?
Ricky
@Ricky J'avais aussi le problème du premier succès. Vous devez définir votre pool d'applications startMode sur AlwaysRunning: msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx
Steve Hibbert
Cela m'a aussi été utile: simple-talk.com/blogs/2013/03/05/…
Steve Hibbert
3
@Silvermind - Si la session est stockée en cours, elle ne sera pas copiée lors du recyclage. Regardez ici .
BornToCode
31

D' ici :

Une façon de conserver les ressources système consiste à configurer les paramètres de délai d'inactivité pour les processus de travail dans un pool d'applications. Lorsque ces paramètres sont configurés, un processus de travail s'arrête après une période d'inactivité spécifiée. La valeur par défaut du délai d'inactivité est de 20 minutes.

Vérifiez également pourquoi le recyclage du pool d'applications par défaut IIS est-il défini sur 1740 minutes?

Si vous n'avez que quelques sites sur votre serveur et que vous voulez qu'ils se chargent toujours rapidement, définissez ce paramètre sur zéro. Sinon, lorsque vous disposez de 20 minutes sans trafic, le pool d'applications se terminera afin de pouvoir redémarrer lors de la prochaine visite. Le problème est que la première visite d'un pool d'applications doit créer un nouveau processus de travail w3wp.exe qui est lent car le pool d'applications doit être créé, ASP.NET ou un autre framework doit être chargé, puis votre application doit être chargé. Cela peut prendre quelques secondes. Par conséquent, je mets cela à 0 chaque fois que j'en ai l'occasion, sauf si c'est pour un serveur qui héberge de nombreux sites qui n'ont pas toujours besoin d'être en cours d'exécution.

Rahul Tripathi
la source
6

IIS a maintenant

Idle Time-out Action : Suspend réglage

La suspension ne fait que geler le processus et c'est beaucoup plus efficace que la destruction du processus.

nPcomp
la source
0

J'ai hérité d'une application de bureau qui appelle une série de services Web sur IIS. Les services Web doivent (également) être capables d'exécuter des processus chronométrés, indépendamment (sans avoir le client). Par conséquent, ils ont tous des minuteries. Les minuteries du service Web s'éteignaient (fuite de mémoire?), Nous avons donc mis le délai d'inactivité à 0 et les minuteries restent allumées.

DaniDev
la source