Отключаем WSRM на TS сервера Server 2012 R2 Std

Моя задача заключается в следующем, у меня есть более 5 Terminal Server и некоторые под управлением Windows Server 2012 R2 Std и вот они почему-то порой нагружаются под 100% по части CPU. Сперва я видел проблему в

  1. Пользователь не разлогинивается при работе на TS, а просто закрывает крестиком окно подключения. Применил настройку: gpedit.msc – Конфигурация пользователя (User Configuration) – Административные шаблоны (Administrative Templates) – Компоненты Windows (Windows Components) – Службы удаленных рабочих столов (Remote Desktop Services) – Узел сеансов удаленных рабочих столов (Remote Desktop Session Host) – Ограничение сеансов по времени (Session Time Limits):
  • Задать ограничение по времени для отключенных сеансов (Set time limit for disconnected sessions): Включена (15 минут)
  • Задать ограничение времени для активных, но бездействующих сеансов служб удаленных рабочих столов (Set time limit for active but idle Remote Desktop Services sessions): Включена (5 минут)

2. Система не корректно работает с памятью

3. Не настроена максимальная производительность систем.

После я уже ничего не понимал, начал все что только можно анализировать:

Что пользователи такого запускают

В какие часы это происходит

Грешил на работу перемещаемых профилей у всех (так принято в компании)

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

·         При входе по RDP (или через консоль) видит надпись «Подождите»

·         При входе по RDP черный экран

·         При входе по RDP видит надпись Applying user settings…

·         При входе по RDP висит надпись Applying Group Policy Printers policy

·         При входе по RDP висит надпись Applying Registry policy

·         Через vSphere Client нагрузка на CPU 100% (ограничение на процессор не выставлено)

Может, конечно, это не из-за этого, но это все наблюдения, которые документирую Я.

Поиск средств контроля за ресурсами роли Терминального сервера системы вывел меня на компоненту: WSRM (Windows System Resource Manager). Вот о ней я хочу составить заметку. Проверил у себя, да! Компоненты нет, а ключи реестра есть.

В наличии:

Терминальный сервер под управлением Windows Server 2012 R2 Std (Version 6.3.9600)

Насколько я понял про работу архитектуры Remote Desktop Services – это некорректное влияние сессии одного пользователя, взявшего на себя ресурсы системы в своем сеансе по отношению к сессиям других пользователей. Компания Microsoft в системе Windows Server 2008 R2 предложила использовать DFSS (Dynamic Fair Share Scheduling) в задачу данного инструмента полагалось балансировка и распределение ресурсов CPU между пользователями. А вот уже в системе Windows Server 2012 R2 добавились возможности:

  1. Network Fair Share     -> Динамическое распределение полосы пропускания сетевого канала между сессиями в зависимости от количества активных сессий.
  2. Disk Fair Share        -> Предотвращение чрезмерного использования дисков одним пользователем, равномерное распределение дисковых операций I/O между сессиями.
  3. CPU Fair Share         -> Динамическое распределение процессорного времени между сессиями в зависимости от количества активных сессий и общего уровня загрузки.
    Но вот управлять этим из какой-либо оснастки уже нельзя, функция работает самостоятельно – только раз нет ручного управления доверять, а я всецело доверял и столкнулся на текущем месте с пугающей обстановкой работы. Что планировалось на благо теперь вносит хаос. Всегда должен быть инструмент ручного управления.

Ниже, где данные возможности активированы в реестре:

После поднятия роли TS появляется параметры

Win + X – Command Prompt (Admin)

(CPU Fair Share)

“HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System”

  • Name: EnableCpuQuota
  • Type: REG_DWORD
  • Data: 0x000000001
  • 1 – это включено, 0 – это выключено
  • (Disk Fair Share)

(Disk Fair Share)

“HKLM\SYSTEM\CurrentControlSet\Services\TSFairShare\Disk”

  • Name: EnableFairShare
  • Type: REG_DWORD
  • Data: 0x000000001
  • 1 – это включено, 0 – это выключено

(Network Fair Share)

“HKLM\SYSTEM\CurrentControlSet\Services\TSFairShare\NetFS”

  • Name: EnableFairShare
  • Type: REG_DWORD
  • Data: 0x000000001
  • 1 – это включено, 0 – это выключено

Во многих руководствах, заметках люди рекомендую отключать данную нерегулируемую надстройку если на Terminal Server используется 1С:Преприятие.

Проверяем через PowerShell что служба DFSS включена:

Win + X – Command Prompt (Admin)

123C:\Windows\system32>powershell PS C:\Windows\system32> (gwmi win32_terminalservicesetting -N “root\cimv2\terminalservices”).enabledfss

Значение 1 – это включено, значение 0 – это выключено. У меня, как и ожидалось включена служба DFSS.

На заметку: Проблемы неадекватности работы TS выявили, все дело в самописной оснастке  используемой на работе. Любое действие нагружает CPU-сервера, когда выставил значении параметра в реестре EnableCpuQuota в ноль. Терминальный сервер под управлением Windows Server 2008 R2 Std стал еще больше захлебываться и после доступ к нему уже ни как, только перезагрузка через vSphere. Пришлось возвращать ключ в дефолтное значение и мириться с проблемами. Руководство не хочет выполнить стандартизацию TS, все на Server 2012 R2 и сделать единые настройки для каждого.

Отключаю через реестр изменяя дефолтное значение с 1 на 0 для трех ключей выше, затем для активации изменений перезагружаю сервер и наблюдаю за ним, как он работает. На этом пока все, с уважением автор блога Олло Александр aka ekzorchik.