Проблемы производительности RDS и RemoteApp на Windows Server 2019/2016

В этой статье я собрал несколько решений распространенных проблем производительности RDS-серверов или опубликованных RemoteApp, с которыми я столкнулся в своей инфраструктуре. Прежде чем применять любое из решений или обходных путей, проверьте, подходит ли оно для вашей инфраструктуры и среды.

Исправление производительности RDS на Windows Server 2016/2019 с помощью UPD

RDS-серверы под управлением Windows Server 2019/2016 с большим количеством пользователей могут иметь низкую производительность при использовании User Profile Disks.

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

Со временем в брандмауэре появляется множество дублирующих правил, что приводит к резкому снижению производительности RDS-сервера (медленный вход в систему, зависание RDS-хостов, не открываются меню и не появляется кнопка «Пуск»).

windows server 2019 rds: низкая производительность многие правила брандмауэраwindows server 2019 rds: плохая производительность много правил брандмауэра

Проверьте количество правил в брандмауэре Windows Defender с помощью команды PowerShell:

(Get-NetFirewallRule).count

тысячи правил брандмауэра на дисках rds с профилем пользователятысячи пользователей правила брандмауэра на rds с дисками с пользовательским профилем

В моем случае на одном из хостов RDS были 18,000 правила брандмауэра! Эти правила создаются для приложений Windows UWP Store каждый раз, когда пользователь входит в систему.

Чтобы устранить проблему, необходимо сначала установить последние обновления безопасности для вашей версии Windows Server (по крайней мере KB4467684 на Windows Server 2016 и KB4490481 для Windows Server 2019). Затем создайте следующий параметр реестра на RDSH:

  • Ключ реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy
  • Тип: REG_DWORD
  • Свойство: DeleteUserAppContainersOnLogoff
  • Значение: 1

Свойство реестра можно создать с помощью команды PowerShell:

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy" -Type DWord -Name DeleteUserAppContainersOnLogoff -Value 1

Если у вас несколько узлов RDS в домене, вы можете развернуть этот параметр реестра с помощью GPO.

Не забудьте вручную очистить входящие и исходящие правила в брандмауэре Windows Defender. Если правил брандмауэра немного, можно использовать сценарий PowerShell из темы TechNet (https://social.microsoft.com/Forums/Azure/en-US/992e86c8-2bee-4951-9461-e3d7710288e9/windows-servr-2016-rdsh-firewall-rules-created-at-every-login?forum=winserverTS).

Вместо использования дисков с профилями пользователей на серверах RDS можно использовать современные контейнеры FSLogix для хранения профилей пользователей.

Низкая производительность RDS/RemoteApp из-за высокой частоты опроса мыши

Многие пользователи жалуются на низкую производительность сеансов RDP, высокую задержку и задержки мыши после переноса фермы RDS на Windows Server 2019. Мышь очень медленно реагирует на движения, курсор дрожит и замирает.

Эта проблема может быть связана с высокими настройками DPI и частоты опроса некоторых оптических мышей (обычно игровых). Например, у популярной мыши Logitech G203 частота опроса по умолчанию составляет 1000 раз в секунду (1000 Hz). Высокая частота опроса мыши приводит к высокой нагрузке на RDP-соединение, и вы можете столкнуться с задержками при работе с RemoteApps. Если уменьшить это значение до 125 раз в секунду (125 Гц), проблема с мышью в сеансе RDP исчезнет.

Вы можете уменьшить частоту опроса, используя инструменты мыши производителя.

уменьшение частоты опроса для игровой мыши rdsуменьшение частоты опроса для игровой мыши rds

Если вы не можете уменьшить частоту опроса, попробуйте отключить тень курсора мыши (снимите флажок Включить тень указателя ) и выберите Нет схема для указателя в настройках мыши в панели управления Windows (main.cpl).

отключение тени указателя мыши и использование другой схемы на windows server rdshотключить тень указателя мыши и использовать не схему на windows server rdsh

Медленные лаги RemoteAPP, мыши и меню после обновления Windows 10

После обновления сборки Windows 10 у пользователей могут возникнуть проблемы с производительностью RemoteApps, опубликованных на RDS-серверах Windows Server 2019/2016/2012R2. RDS RemoteApps могут начать работать значительно медленнее, любое действие, вызванное щелчком мыши, выполняется (отрисовывается) в 2-3 раза дольше, а контекстные меню в RemoteApps отображаются медленно (пункты меню мигают, на них приходится нажимать несколько раз, иногда они вообще не появляются). Аналогичные проблемы возникали при обновлении сборок Windows 10 на клиентах до 1803 и 20H2.

При этом проблемы не возникают в полноэкранном режиме RDP-соединения, установленного с помощью встроенного Mstsc.exe или клиентом RDCMan.

Чтобы обойти эту проблему, можно попробовать изменить значение параметра Используйте Расширенная графика RemoteFX для RemoteApp параметр Отключено с помощью локального редактора GPO (gpedit.msc) (раздел GPO: Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Remote Session Environment).

Использование графики Advanced RemoteFX для RemoteApp - gpoИспользование графики Advanced RemoteFX для RemoteApp - gpo

Если графические программы (как правило, CAD-приложения) опубликованы как RemoteAPP, то они не будут работать без поддержки Remote FX.

Однако есть и обходной путь — заменить версию клиента RDP на более старую. Поскольку проблемы с производительностью RemoteApp возникли и в Windows 10 1709, лучше всего использовать библиотеки RDP от 1607 или 1703. Дело в том, что после обновления сборки Windows 10 устанавливается новая версия RDP-клиента, которая некорректно работает с программами, опубликованными через RDS RemoteApp.

Вы можете исправить плохую работу RemoteApp на клиентах, заменив файлы mstsc.exe и mstscax.dll в папке C:\Windows\System32 на версии из предыдущей сборки Windows 10 (1703 или 1607).

Как заменить файлы клиента RDP в Windows 10?

  1. Закройте все RDP-соединения и запущенный RemoteApp (лучше даже перезагрузить компьютер);
  2. Скачайте архив с версиями mstsc.exe и mstscax.dll из сборки Windows 10 1607 (mstsc-w10-1607.zip);
  3. Скопируйте оригинальные файлы mstsc.exe и mstscax.dll из папки C:\windows\system32\ в папку C:\BackUp с помощью команд:md c:\backup\
    copy C:\windows\system32\mstsc.exe c:\backup
    copy C:\windows\system32\mstscax.dll c:\backup
  4. Затем вам нужно назначить свою учетную запись владельцем файлов mstsc.exe и mstscax.dll в каталоге C:\windows\system32\, отключить наследование и предоставить себе права на изменение файлов:takeown /F C:\windows\system32\mstsc.exe
    takeown /F C:\windows\system32\mstscax.dll
    icacls C:\windows\system32\mstsc.exe /inheritance:d
    icacls C:\windows\system32\mstscax.dll /inheritance:d
    icacls C:\windows\system32\mstsc.exe /grant root:F
    icacls C:\windows\system32\mstscax.dll /grant root:F
    заменить mstsc.exe и mstscax.dll заменить mstsc.exe и mstscax.dll
    В этом примере имя локальной учетной записи с правами администратора root. Замените его именем вашей учетной записи.
  5. Замените файлы в каталоге C:\windows\system32\ на файлы из архива;
  6. Восстановите исходные разрешения на скопированные файлы. Для этого включите наследование разрешений NTFS и установите владельцем файлов «NT Service\TrustedInstaller» с помощью инструмента ICACLS:icacls C:\windows\system32\mstsc.exe /inheritance:e
    icacls C:\windows\system32\mstscax.dll /inheritance:e
    icacls C:\windows\system32\mstsc.exe /setowner "NT Service\TrustedInstaller" /T /C
    icacls C:\windows\system32\mstscax.dll /setowner "NT Service\TrustedInstaller" /T /C
  7. Осталось перерегистрировать библиотеку::
    regsvr32 C:\Windows\System32\mstscax.dll
Подсказка. Также можно заменить системные файлы, запустив командную строку от имени учетной записи SYSTEM. Кроме того, можно скопировать и заменить файлы mstsc.exe и mstscax.dll на нескольких компьютерах в домене Active Directory.

Это временно устранит проблему производительности RemoteApp на клиентах Windows 10.

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

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