Як відключити час очікування в пулі додатків у IIS7?


Відповіді:


184

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

Як не дивно, це не зафіксовано в документах 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 та Gold Partner.

  • Потім є також емпіричні докази того, що це "просто працює".


3
голова перед іншими - прочитавши це, я встановив час очікування в режимі очікування 0 на IIS7, і він почав вимикатися негайно - кожне завантаження сторінки займало 15 секунд. Зараз я збільшив його до 600, і все знову палає швидко.
nailitdown

1
@nailitdown: Ви можете перевірити це ще раз. Я просто встановив час очікування пулу IIS6 на 0, і він прекрасно працює. Існує ймовірність, що між IIS7 / IIS6 є інше, що було б добре знати.
Doug S

3
оскільки я розмістив повідомлення про те, що у нас було багато проблем з VPS, з яким я працював ... цілком ймовірно, це було неправильно налаштовано. Я просто намагався дублювати його на новому VPS, і він поводиться правильно, як описано.
nailitdown

3
@ Zero3 - добре .... перед тим, як змінити будь-які налаштування на веб-сайті з високим трафіком, ви завжди повинні перевіряти наявність побічних ефектів тощо у вашому середовищі постановки / якості. Також протягом часу, коли ви застосовуєте зміни до свого виробничого середовища, тоді вам дійсно слід викинути сторінку обслуговування для користувачів, які стикаються з громадськістю, доки зміна не набуде чинності. Цими змінами потрібно керувати, щоб не було сюрпризів.
Кев

2
@ Zero3 - так, для зміни багатьох налаштувань пулу додатків потрібен перезапуск процесу, що набуває чинності, що за замовчуванням відбувається відразу. Ви можете змінити це за допомогою DisallowRotationOnConfigChange - детальніше про це див. На сервері defaultfault.com/questions/333907/… .
ТрістанК

11

Чудова відповідь! дякую Кеву!

Невелике оновлення: 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


15
Вам, мабуть, краще порадити встановити ваш цикл переробки на встановлений час (наприклад, 0100), а не на 24 години, оскільки це призведе до 24 годин з моменту останнього перезавантаження сервера / її скидання.
Ніл

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

6
Пояснення цього вставленого коду було б корисним.
Люк Олдертон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.