Как отключить тайм-аут пула приложений в IIS7?

Будет ли он отключен, если я установил тайм-аут простоя в 0?

Ответ 1

Да, установка значения тайм-аута ожидания на ноль приведет к отключению тайм-аутов простоя.

Как ни странно, это не документировано в документах MS, но мои доказательства для этого возникают из:

  • Схема настроек IIS

    Если вы посмотрите схему параметров IIS в:

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

    Определение схемы для idleTimeout под

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

    он выглядит так:

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

    Если вы посмотрите на атрибут validationParameter, мы видим диапазон от 0 до 2592000 секунд (,60 указывает степень детализации настройки, в этом случае значение должно быть разделено на 60 [одна минута]).

    Если вы видите начальное допустимое значение 0, тогда обычно указывается, что этот параметр можно отключить.

  • Настройки тайм-аута пула приложений IIS7

    Брэд Кингсли является основателем и генеральным директором OrcsWeb, который является довольно известным, уважаемым и доверенным владельцем Microsoft и Золотым партнером.

  • Тогда есть также эмпирическое доказательство того, что он "просто работает".

Ответ 2

Отличный ответ! спасибо Кев!

Небольшое обновление: URL, который вы опубликовали, перемещен, и теперь он: http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/

Мне было интересно, есть ли причина, по которой это не является дефолтом, и может ли быть влияние производительности для того, чтобы поддерживать пул приложений слишком долго. Ну, сохраняя его, когда он простаивает, не будет вызывать больше проблем, чем не перерабатывать его, когда есть трафик и нет времени простоя. Если вас беспокоит утечка памяти или утечка других ресурсов, существует настройка для принудительной переработки на основе времени/количества запросов с момента последнего потребления/потребления памяти. Вот документация для него:

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

Я собираюсь отключить мой сервер на холостом ходу (idleTimeout = 0) и перерабатывать каждые 24 часа: Утилизация > Регулярный интервал времени = 1440

Ответ 3

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" 
}