Como desativar o tempo limite ocioso do pool de aplicativos no IIS7?

Respostas:

184

Sim, definir o valor do tempo limite inativo como zero desabilitará o tempo limite inativo.

Estranhamente, isso não está documentado nos documentos da MS, mas minha evidência disso decorre de:

  • Esquema de configurações do IIS

    Se você der uma olhada no esquema de configurações do IIS em:

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

    A definição de esquema para idleTimeoutsob

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

    parece com:

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

    Se você olhar para o validationParameteratributo, vemos um intervalo de 0 a 2592000 segundos (o,60 especifica a granularidade da configuração, nesse caso, o valor deve ser divisível por 60 [um minuto]).

    Se você 0vir um valor permitido inicial de , isso geralmente indica que a configuração pode ser desativada.

  • Configurações de tempo limite inativo do pool de aplicativos IIS7

    Brad Kingsley é o fundador e CEO da OrcsWeb, que é um hoster da Microsoft e Gold Partner bastante conhecido, respeitado e confiável.

  • Depois, há também a evidência empírica do fato de que "simplesmente funciona".

Kev
fonte
3
um alerta para os outros - depois de ler isso, defino meu tempo limite ocioso como 0 no IIS7 e ele começou a atingir o tempo limite imediatamente - cada carregamento de página levava 15 segundos ou mais. eu agora aumentei para 600 e tudo está incrivelmente rápido novamente.
Nailitdown 26/10/12
1
@ thumbnailitdown: convém verificar isso. Acabei de definir o tempo limite do pool de aplicativos do IIS6 para 0 e ele funciona bem. Há uma chance de que seja diferente entre o IIS7 / IIS6, o que seria bom saber.
Doug S
3
desde que publiquei que tínhamos vários problemas com o VPS com o qual eu estava trabalhando ... muito provavelmente ele foi configurado de alguma forma. Eu apenas tentei duplicá-lo no novo VPS e ele se comporta corretamente, conforme descrito.
Nailitdown
3
@ Zero3 - bem .... antes de alterar qualquer configuração em um site de alto tráfego, você sempre deve testar efeitos colaterais, etc., no seu ambiente de teste / controle de qualidade. Além disso, durante o período em que você aplica a alteração em seu ambiente de produção, você realmente deve exibir uma página de manutenção para usuários públicos até que a alteração tenha efeito. Você precisa gerenciar essas alterações para que não haja surpresas.
Kev
2
@ Zero3 - sim, alterar muitas das configurações do Pool de Aplicativos requer a reinicialização do processo, o que, por padrão, acontece imediatamente. Você pode alterar isso com o DisallowRotationOnConfigChange - consulte serverfault.com/questions/333907/… para um pouco mais sobre isso.
precisa saber é o seguinte
11

Ótima resposta! obrigado Kev!

Uma pequena atualização: o URL que você postou mudou e agora é: http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/

Fiquei me perguntando se existe um motivo pelo qual esse não é o padrão e se pode haver um impacto no desempenho para manter o pool de aplicativos aberto por muito tempo. Bem, mantê-lo em marcha lenta não causará mais problemas do que não reciclá-lo quando houver tráfego e tempo ocioso. Se você estiver preocupado com vazamentos de memória ou outros recursos, há uma configuração para forçar a reciclagem com base no tempo / número de solicitações desde o último consumo de reciclagem / memória. Aqui está a documentação para isso:

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

Vou configurar meu servidor para não reciclar no modo inativo (idleTimeout = 0) e reciclar a cada 24 horas: Reciclagem> Intervalo de tempo regular = 1440

Shay Mandel
fonte
15
Provavelmente, é melhor você definir sua reciclagem para um horário fixo (por exemplo, 0100) em vez de 24 horas, pois isso resultará em 24 horas desde a última reinicialização do servidor / redefinição do iis.
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
fonte
6
Uma explicação desse código colado seria útil.
Luke Alderton