Заметки о Windows и других программных продуктах Microsoft...

CPU Throttling в IIS 8

CPU Throttling в IIS 8

Если на одном сервере размещено несколько веб-приложений, то для них может потребоваться разграничение нагрузки. CPU Throttling позволяет регулировать уровень ресурсов CPU, доступный для пула приложений IIS. Надо сказать, что возможность ограничения пула по CPU появился еще в IIS 7, однако тогда она работала следующим образом:

при достижении заданного лимита использования процессора пул приложений просто останавливался на некоторое время. Не очень красивое решение, ведь при этом приложение не ограничивается, а временно выводится из строя. Полноценная регулировки нагрузки CPU была реализована только в IIS 8, где появилась возможность ограничивать уровень нагрузки для каждого пула приложений, не останавливая его.

Настройки CPU Throttling входят в конфигурацию пула приложений и настраиваются следующим образом.

Если надо включить ограничение для одного конкретного пула приложений, то выбираем его из списка и переходим в раздел «Advanced Settings». Если же надо задать дефолтные ограничения для всех пулов, то идем в раздел «Set Application Pool Defaults».

Раздел Application Pools в IIS Manager

 

В настройках переходим в раздел CPU, где нас интересуют следующие настройки:

• Limit — максимальный процент процессорного времени, который может использовать пул приложений. При превышении этого значения производится действие, указанное в поле Limit Action. В IIS 8 процент задается в тысячных долях процента (1\1000 of %), т.е. чтобы задать ограничение в 30% в поле Limit надо указать значение 30000. В IIS 8.5 значение задается по человечески, в процентах;
• Limit Action — действие,  которые должны произойти с пулом при достижении заданного лимита нагрузки CPU;
• Limit Interval — период проверки и сброса результата мониторинга нагрузки. Этот параметр не используется при тротлинге и предназначен в основном для обеспечения совместимости с предыдущими версиями IIS.

Примечание. Настройки применяется к пользователю, от имени которого запущен пул приложений. По умолчанию каждый пул имеет уникальную учетную запись и нагрузка для каждого пула регулируется отдельно. Если вы используете специально выделенную учетную запись, под которой работают несколько пулов приложений, то для всех них настройки будут идентичны.

Расширенные свойства пула приложений в IIS

 

После установки лимита в поле Limit Action надо выбрать действие,  которые должны произойти с пулом при достижении заданного лимита:

• NoAction — генерируется событие, производится запись в системный журнал. Никаких действий производиться не будет;
• KillW3wp — рабочий процесс для пула останавливается на время, указанное в поле Limit Interval. Событие записывается в системный журнал;
• Throttle — жестко ограничивает доступную для пула процессорную мощность значением, указанным в поле Limit. Limit Interval не используется и запись в журнал не производится;
• ThrottleUnderLimit — ограничение работает в том случае, если сервер сильно нагружен. При небольшой нагрузке на сервер пул может превысить ограничение. Также как и в предыдущем случае Limit Interval не используется и запись в журнал не производится.

выбор действия при достижении предела CPU

 

Также настройки можно произвести с помощью консольной утилиты 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 не занимается резервированием процессорной мощности, а служит исключительно для ограничения нагрузки.

 
 
Комментарии

Пока нет комментариев.