Comment désactiver le délai d'inactivité du pool d'applications dans IIS7?

Réponses:

184

Oui, la définition de la valeur du délai d'inactivité à zéro désactivera les délais d'inactivité.

Curieusement, cela n'est pas documenté dans les documents MS, mais mes preuves à ce sujet proviennent de:

  • Schéma des paramètres IIS

    Si vous regardez le schéma des paramètres IIS dans:

    C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml

    La définition de schéma pour idleTimeoutunder

    <sectionSchema name="system.applicationHost/applicationPools">

    On dirait:

    <attribute name="idleTimeout" 
           type="timeSpan" 
           defaultValue="00:20:00" 
           validationType="timeSpanRange" 
           validationParameter="0,2592000,60"/>

    Si vous regardez l' validationParameterattribut, nous voyons une plage de 0 à 2592000 secondes (le ,60spécifie la granularité du paramètre, dans ce cas, la valeur doit être divisable par 60 [une minute]).

    Si vous voyez une valeur de départ autorisée de, 0cela indique généralement que le paramètre peut être désactivé.

  • Paramètres de délai d'inactivité du pool d'applications IIS7

    Brad Kingsley est le fondateur et PDG d'OrcsWeb, un hébergeur Microsoft et un partenaire Gold assez bien connu, respecté et de confiance.

  • Ensuite, il y a aussi la preuve empirique du fait que "ça marche".

Kev
la source
3
un avertissement pour les autres - après avoir lu ceci, j'ai mis mon délai d'inactivité à 0 sur IIS7 et il a commencé à expirer immédiatement - chaque chargement de page a pris environ 15 secondes. Je l'ai maintenant porté à 600 et tout est à nouveau incroyablement rapide.
nailitdown
1
@nailitdown: Vous voudrez peut-être revérifier cela. Je viens de définir le délai d'expiration du pool d'applications IIS6 sur 0, et cela fonctionne bien. Il y a une chance que ce soit différent entre IIS7 / IIS6, ce qui serait bon à savoir.
Doug S
3
depuis que j'ai posté que nous avions plusieurs problèmes avec le VPS avec lequel je travaillais ... il était fort probable qu'il soit mal configuré. J'ai juste essayé de le dupliquer sur le nouveau VPS, et il se comporte correctement, comme décrit.
nailitdown
3
@ Zero3 - eh bien ... avant de modifier un paramètre sur un site à fort trafic, vous devez toujours tester les effets secondaires, etc. sur votre environnement de mise en scène / QA. Aussi pendant le temps que vous appliquez le changement à votre environnement de production, vous devriez vraiment créer une page de maintenance pour les utilisateurs publics jusqu'à ce que le changement prenne effet. Vous devez gérer ces changements pour qu'il n'y ait pas de surprises.
Kev
2
@ Zero3 - oui, la modification de nombreux paramètres du pool d'applications nécessite un redémarrage du processus pour prendre effet, ce qui par défaut se produit immédiatement. Vous pouvez changer cela avec DisallowRotationOnConfigChange - voir serverfault.com/questions/333907/ ... pour un peu plus à ce sujet.
TristanK
11

Très bonne réponse! merci Kev!

Petite mise à jour: l'URL que vous avez postée a été déplacée et elle est maintenant: http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/

Je me demandais s'il y avait une raison pour laquelle ce n'est pas la valeur par défaut, et s'il pourrait y avoir un impact sur les performances pour garder le pool d'applications ouvert trop longtemps. Eh bien, le garder en place lorsqu'il est inactif ne vous causera pas plus de problèmes que de ne pas le recycler lorsqu'il y a du trafic et qu'il n'y a pas de temps d'inactivité. Si vous êtes préoccupé par des fuites de mémoire ou d'autres fuites de ressources, il existe un paramètre pour forcer le recyclage en fonction du temps / du nombre de demandes depuis le dernier recyclage / consommation de mémoire. Voici la documentation pour cela:

http://technet.microsoft.com/en-us/library/cc753179(v=ws.10).aspx

Je vais configurer mon serveur pour ne pas recycler en cas d'inactivité (idleTimeout = 0) et recycler toutes les 24 heures: Recyclage> Intervalle de temps normal = 1440

Shay Mandel
la source
15
Il est probablement préférable de définir votre recyclage sur une heure fixe (par exemple 0100) plutôt que sur 24 heures, car cela entraînera 24 heures depuis le dernier redémarrage du serveur / sa réinitialisation.
Neal
1
Import-Module WebAdministration

$pools = Get-ChildItem iis:\apppools

foreach ($pool in $pools)
{ 
$poolname = $pool.Name

Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeout="20"}
Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeoutaction="Suspend"}
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart -Value @{time="0"} 
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart.schedule -Value @{value="02:00:00"} 
Set-ItemProperty IIS:\AppPools\$poolname -name Recycling -value @{logEventOnRecycle="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"} 

Write-Host "Updated $poolname settings" 
}
user6470603
la source
6
Une explication de ce code collé serait utile.
Luke Alderton