CPU Throttling в IIS 8.
Якщо на одному сервері розміщено кілька веб-додатків, то для них може знадобитися розмежування навантаження. CPU Throttling дозволяє регулювати рівень ресурсів CPU, доступний для пулу додатків IIS. Треба сказати, що можливість обмеження пулу по CPU з'явився ще в IIS 7, однак тоді вона працювала наступним чином:
при досягненні заданого ліміту використання процесора пул додатків просто зупинявся на деякий час.Не дуже гарне рішення, адже при цьому програма не обмежується, а тимчасово виводиться з ладу. Повноцінна регулювання навантаження CPU була реалізована тільки в IIS 8, де з'явилася можливість обмежувати рівень навантаження для кожного пулу додатків, не зупиняючи його.
Налаштування CPU Throttling входять в конфігурацію пулу додатків і налаштовуються наступним чином.
Якщо треба включити обмеження для одного конкретного пулу додатків, то вибираємо його зі списку і переходимо в розділ «Advanced Settings» . Якщо ж треба задати дефолтні обмеження для всіх пулів, то йдемо в розділ «Set Application Pool Defaults».
В налаштуваннях переходимо в розділ CPU, де нас цікавлять такі настройки:
• Limit - максимальний відсоток процесорного часу, який може використовувати пул додатків. При перевищенні цього значення проводиться дію, вказане в полі Limit Action.В IIS 8 відсоток задається в тисячних частках відсотка (1 \ 1000 of%), тобто щоб задати обмеження в 30% в поле Limit треба вказати значення 30000. В IIS 8.5 значення задається по людськи, в процентах;
• Limit Action - дія, які повинні відбутися з пулом при досягненні заданого ліміту навантаження CPU;
• Limit Interval - період перевірки і скидання результату моніторингу навантаження.Цей параметр не використовується при тротлінг і призначений в основному для забезпечення сумісності з попередніми версіями IIS.
Примітка. Налаштування застосовується до користувача, від імені якого запущено пул додатків. За замовчуванням кожен пул має унікальну обліковий запис і навантаження для кожного пулу регулюється окремо.Якщо ви використовуєте спеціально виділену обліковий запис, під якою працюють кілька пулів додатків, то для всіх них настройки будуть ідентичні.
Після установки ліміту в поле Limit Action треба вибрати дію, які повинні відбутися з пулом при досягненні заданого ліміту:
• NoAction - генерується подія, проводиться запис в системний журнал.Ніяких дій проводитися не буде;
• KillW3wp - робочий процес для пулу зупиняється на час, вказаний в полі Limit Interval. Подія записується в системний журнал;
• Throttle - жорстко обмежує доступну для пулу процессорную потужність значенням, зазначеним у поле Limit.Limit Interval не використовується і запис в журнал не проводиться;
• ThrottleUnderLimit - обмеження працює в тому випадку, якщо сервер сильно навантажений. При невеликому навантаженні на сервер пул може перевищити обмеження. Також як і в попередньому випадку Limit Interval не використовується і запис в журнал не проводиться.
Також настройки можна зробити за допомогою консольної утиліти appcmd. Так наприклад для включення для DefaultAppPool тротлінга при 30% навантаженні треба відкрити командний рядок і виконати команду:
% systemroot% \ system32 \ inetsrv \ appcmd set apppool DefaultAppPool /cpu.limit:30000 /cpu.action:Throttle
А налаштувати ці значення як дефолтні для всіх пулів можна командою:
% systemroot% \ system32 \ inetsrv \ appcmd set config -section: system.applicationHost/applicationPools /applicationPoolDefaults.cpu.limit:30000 /cpu.action:Throttle/commit: apphost
Таким чином можна досить гнучко регулювати процессорную навантаження на сервер, створювану web-додатками. На завершення нагадаю, що CPU Throttling не займається резервуванням процесорної потужності, а служить виключно для обмеження навантаження..