Odpowiedzi:
Tak, ustawienie wartości limitu czasu bezczynności na zero spowoduje wyłączenie limitów czasu bezczynności.
Co dziwne, nie jest to udokumentowane w dokumentach MS, ale moje dowody na to pochodzą z:
Schemat ustawień usług IIS
Jeśli spojrzysz na schemat ustawień usług IIS w:
C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml
Definicja schematu dla idleTimeout
under
<sectionSchema name="system.applicationHost/applicationPools">
to wygląda jak:
<attribute name="idleTimeout"
type="timeSpan"
defaultValue="00:20:00"
validationType="timeSpanRange"
validationParameter="0,2592000,60"/>
Jeśli spojrzysz na validationParameter
atrybut, zobaczysz zakres od 0 do 2592000 sekund (format,60
określa szczegółowość ustawienia, w tym przypadku wartość musi być podzielna przez 60 [jedna minuta]).
Jeśli widzisz początkową dopuszczalną wartość, 0
to zwykle oznacza to, że ustawienie można wyłączyć.
Ustawienia limitu czasu bezczynności puli aplikacji usług IIS7
Brad Kingsley jest założycielem i dyrektorem generalnym OrcsWeb, który jest dość dobrze znanym, szanowanym i zaufanym dostawcą usług hostingowych Microsoft oraz Złotym Partnerem.
Jest też empiryczny dowód na to, że „po prostu działa”.
Świetna odpowiedź! dzięki Kev!
Mała aktualizacja: opublikowany adres URL został przeniesiony i jest teraz: http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/
Zastanawiałem się, czy istnieje powód, dla którego nie jest to ustawienie domyślne i czy może to mieć wpływ na wydajność w przypadku zbyt długiego utrzymywania otwartej puli aplikacji. Cóż, utrzymanie go, gdy jest bezczynny, nie sprawi ci więcej kłopotów, niż rezygnacja z recyklingu, gdy jest ruch i nie ma czasu bezczynności. Jeśli martwisz się wyciekami pamięci lub innymi wyciekami zasobów, istnieje ustawienie wymuszania recyklingu na podstawie czasu / liczby żądań od ostatniego recyklingu / zużycia pamięci. Oto dokumentacja do tego:
http://technet.microsoft.com/en-us/library/cc753179(v=ws.10).aspx
Mam zamiar ustawić serwer na brak recyklingu w stanie bezczynności (idleTimeout = 0) i recykling co 24 godziny: Recycling> Regular Time Interval = 1440
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"
}