Ограничение использования CPU для Application Pool в IIS 8 | Windows для системных администраторов

Ограничение использования CPU для Application Pool в IIS 8

Важной функцией любого веб-сервера является возможность ограничения использования процессорных ресурсов CPU определенным сайтом, в противном случае один сайт может монополизировать ресурсы CPU, что может быть неприемлемо, особенно для серверов веб-хостинга, разделяемых ресурсы между несколькими клиентами с разными сайтами. В IIS (Internet Information Services) 7.0 и более ранних версиях, присутствовала возможность мониторинга использования CPU веб приложениями и отключения на несколько минут пула приложений, превысившего заданный лимит. Полноценная возможность управления потреблением ресурсов CPU, доступных каждому пулу приложений, появилась только в IIS 8.0 (Windows Server 2012 и выше). Эта возможность называется CPU Throttling и позволяет вместо временной остановки чрезмерного агрессивного к процессору пула приложений, задать максимальное количество ресурсов CPU, доступных каждому пулу IIS.

В этой статье мы покажем, как ограничить использование CPU пулами приложений в IIS 8 (и выше) на примере веб-сервера на базе Windows Server 2012.

Откройте консоль Internet Information Services (IIS) Manager (%systemroot%\system32\inetsrv\iis.msc), разверните в дереве ваш сервер и выберите раздел Application Pools. Настройки CPU Throttling в IIS находятся в разделе параметров каждого пула.

Совет. Чтобы для каждого сайта, запущенного на IIS, можно было задать собственные лимиты CPU, нужно для каждого сайта создать собственные App Pool.
  • Если нужно включить ограничения для конкретного пула, выберите его в списке и перейдите в раздел настроек Advanced Settings.
  • Если нужно задать настройки лимитов по-умолчанию для всех пулов, нужно выбрать секцию Set Application Pool Defaults.

В окне настроек Advanced Settings нас интересуют параметры, задаваемые в секции CPU:

  • Limit – максимальный % процессорного времени, который может использовать пул приложений. При превышении этого значения, выполняется действие, указанное в поле Limit. В IIS 8 процент задается в тысячных долях (1/ 1000 процента ). К примеру, чтобы ограничить потребление CPU в 20%, в поле Limit нужно указать 20000. В IIS 8.5 значение указывается в обычных процентах. Отключить лимит использования можно, задав 0
  • Limit Action – действие, которое выполняется с пулом при превышении лимита использования CPU
  • Limit Interval (minutes) – периодичность проверки и сброса результатов загрузки при приостановке рабочего процесса. Этот параметр не используется для CPU Throttling, и используется для совместимости с предыдущими версиями IIS.

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

В поле Limit Action можно выбрать одно из следующих действий, которое будет выполнено при превышении заданного лимита.

  • NoAction – никаких действий не выполняется, а в журнал записывается событие о превышении CPU
  • KillW3wp (Kill worker processes) — рабочий процесс пула, превысившего лимит приостанавливается на время, указанное в поле Limit Interval. В журнал добавляется соответствующая запись.
  • Throttle – жесткое ограничение доступных ресурсов CPUзначением, заданным в поле Limit. Значение поля Limit в этом случае игнорируется, а в журнал пишется событие.
  • ThrottleUnderLimit – ограничения работают только при высокой загрузке сервера. При наличии свободных ресурсов CPU, пул может превысить заданный лимит.

Настроить CPU Throttling можно и из командной строки с помощью утилиты appcmd. Например, чтобы для пула DefaultAppPool установить ограничение в 30% использования CPU, нужно выполнить команду:

%systemroot%\system32\inetsrv\appcmd set apppool DefaultAppPool /cpu.limit:30000 /cpu.action:Throttle

Включить ограничение для всех пулов IIS можно так:

%systemroot%\system32\inetsrv\appcmd set config -section:system.applicationHost/applicationPools /applicationPoolDefaults.cpu.limit:10000 /cpu.action:Throttle /commit:apphost

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

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

Еще записи по теме: Windows Server 2012
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)



MAXCACHE: 0.24MB/0.01713 sec