Ограничиваем пропускную способность IIS на сервере SCCM с ролью SUP (WSUS).

imageВ процессе централизованной раздачи клиентам System Center 2012 R2 Configuration Manager (SCCM) очередной порции обновлений с сервера с ролью Software Update Point (SUP)столкнулись с ситуацией пиковой загрузки на канале передачи данных - участка с низкой пропускной способностью на канале между структурными подразделениями и площадкой, на которой был расположен сервер SCCM. По графику отдачи трафика на сервере SCCM было хорошо видно, что исходящий трафик “упёрся” в границу того самого “узкого места на канале. Разумеется таких ситуаций чаще всего можно избежать заранее настраивая приоритизацию трафика на разных уровнях, начиная с сетевого оборудования. Но что делать, если по какой-то причине проблема возникла прямо здесь и прямо сейчас, а доступа к сетевому оборудованию нет.  То есть фактически нужно как-то оперативно “задушить” трафик отдачи обновлений Windows Update на определённый момент времени средствами Windows. Простое и эффективное решение подсказал автор заметки Ограничиваем аппетиты WSUS-а.

В качестве решения предлагается ограничение общей пропускной способности (в байтах) веб-сервера IIS. За это отвечает параметр maxGlobalBandwidth в разделе конфигурации IIS -system.applicationHost/webLimits.

Чтобы запросить текущие значения параметров в указанном разделе конфигурации IIS с помощью утилиты командной строки appcmd.exe выполним:

cd /d %Windir%\system32\inetsrv\
appcmd.exe list config /section:webLimits /config:*

В полученном ответе мы увидим, что значение по умолчанию для интересующего нас параметра параметра – 4294967295:

<system.applicationHost>
  <webLimits maxGlobalBandwidth="4294967295" connectionTimeout="00:02:00" demandStartThreshold="2147483647" dynamicIdleThreshold="0" headerWaitTimeout="00:00:00" minBytesPerSecond="240" dynamicRegistrationThreshold="100" />
</system.applicationHost>

Предположим, нам нужно уменьшить полосу пропускания трафика IIS до 20 Mbit/s. Рассчитаем необходимое значение параметра в байтах: (20 * 1024 * 1024)/8 = 2 621 440 байт.

Выполним команду установки рассчитанного значения:

cd /d %Windir%\system32\inetsrv\
appcmd.exe set config -section:system.applicationHost/webLimits /maxGlobalBandwidth:"2621440" /commit:apphost

В ответ получим сообщение об успешном применении параметра конфигурации:

Applied configuration changes to section "system.applicationHost/webLimits" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"

Туже самую настройку можно выполнить и через консоль IIS Manager, перейдя на уровне веб-сервера в раздел Management > Configuration Editor

image

В поле Section из выпадающего дерева элементов конфигурации выберем system.applicationHost/webLimits, зададим значение интересующего нас параметра maxGlobalBandwidth и нажмём в правом меню действий Apply, чтобы изменения вступили в силу.

image

Результат сможем наблюдать сразу же. В нашем случае с настройками IIS по умолчанию отдача трафика клиентам была на пределе возможностей “узкого места” в сети, что вызывало ряд вытекающих проблем для пользователей находящихся в “задушенном” сегменте сети.

image

Сразу после применения рассчитанного нами параметра ситуация изменилась на глазах…

image

Таким образом критическая ситуация загрузки канала была ликвидирована.

У такого подхода к ограничению трафика в отличии от классического использования QoS есть преимущество в том, что в случае необходимости изменения пропускной способности по какому-то заданному расписанию, можно прибегнуть к помощи планировщика заданий Windows, запуская из него в нужное время вышеприведённую команду настройки IIS.

Дополнительные источники информации:

IIS.NET - Configuration Reference - system.applicationHost - webLimits
Stackoverflow.com - IIS7: limit traffic for the server

Всего комментариев: 2 Комментировать

  1. sergiochoo /

    Так получается все сегменты сети зарезаются по скорости.
    А можно же было только на клиентах, где медленный канал в настройках БИТСа выставить ограничения.
    К чему эти костыли?

  2. Сергей Новиков /

    битс ограничивают скорость на СКАЧИВАНИЕ, не?
    а цель - ограничить ИСХОДЯЩИЙ трафик с конкретного хоста

Добавить комментарий