Плохая производительность (тормозит) RDS и RemoteAPP в Windows Server 2019/2016

Плохая производительность (тормозит) RDS и RemoteAPP в Windows Server 2019/2016

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

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

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

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

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

тысячи правил файервола в брандмауере windows defender на RDS серверах Windows Server 2019

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

(Get-NetFirewallRule).count

очень много пользовательских правил файервола на rds windows server 2019

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

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

  • Ветка: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicy
  • Тип: REG_DWORD
  • Параметр: DeleteUserAppContainersOnLogoff
  • Значение:
    1

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

New-ItemProperty -Path “HKLM:SYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicy” -Type DWord -Path -Name DeleteUserAppContainersOnLogoff -Value 1

Не забудьте вручную очистить входящие и исходящих правил в Windows Defender Firewall. Если правил файервола немного, можно использовать готовый 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).

Проблемы с мышью в RDP сессии на Windows Server 2019/2016 RDS

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

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

Уменьшить Polling Rate/Report Rate можно в утилитах настройки параметров мыши от вендора.

уменьшить частоту опроса мыши в rds на windows server 2019

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

отключить тему для мыши в RDP сесии пользователяpo-umolchaniyu

Медленно работают RemoteApp и отрисовываются меню в Windows 10

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

При этом проблемы не проявляются в окне обычного подключения к RDS серверу с помощью клиента Mstsc или RDCMan.

Для временного решения проблемы можно попробовать в редакторе локальной GPO (gpedit.msc) на RDS серверах изменить значение параметра Use advanced RemoteFX graphics for RemoteApp (Использовать дополнительную графику для удаленного приложения RemoteApp) на Disabled (раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Remote Session Environment, в русской редакции Windows путь такой: Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удалённых рабочих столов -> Среда удаленных сеансов).

Использовать дополнительную графику для удаленного приложения RemoteApp

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

Также есть обходное решение, которое заключается в замене версии клиента RDP на более старую. Т.к. проблемы с производительностью Remoteapp встречались еще в Windows 10 1709, лучше всего использовать библиотеки RDP из 1607 или 1703.
Дело в том, что после апгрейда билда Windows 10 в системе устанавливается новая версия клиента RDP, которая на данный момент работает некорректно с опубликованными через RemoteApp приложениями.
Если заменить файлы mstsc.exe и mstscax.dll в каталоге C:WindowsSystem32 на версии файлов из предыдущего билда Windows 10 (1703 или 1607), проблема с производительностью RemoteApp исчезает.

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

  1. Закройте все RDP подключения и запущенные RemoteApp (лучше даже перезагрузить компьютер);
  2. Скачайте архив с версиями файлов mstsc.exe и mstscax.dll из Windows 10 1607 (ссылка на скачивание с Я.Диска mstsc-w10-1607.zip);
  3. Скопируйте оригинальные файлы mstsc.exe и mstscax.dll из каталога C:windowssystem32 в каталог C:Backup с помощью команд:
    md c:backup
    copy C:windowssystem32mstsc.exe c:backup
    copy C:windowssystem32mstscax.dll c:backup
  4. Затем нужно назначить свою учетную запись владельцем файлов mstsc.exe и mstscax.dll в каталоге C:windowssystem32, отключите наследование и предоставьте себе права на изменение файлов:
    takeown /F C:windowssystem32mstsc.exe
    takeown /F C:windowssystem32mstscax.dll
    icacls C:windowssystem32mstsc.exe /inheritance:d
    icacls C:windowssystem32mstscax.dll /inheritance:d
    icacls C:windowssystem32mstsc.exe /grant root:F
    icacls C:windowssystem32mstscax.dll /grant root:F

    замена mstsc.exe и mstscax.dll в Windows 10 1803 / 1709.
    (в этом примере имя локальной учтённой записи с правами администратора – root. Замените ее на имя вашей учетной записи).
  5. Замените файлы в каталоге C:windowssystem32 файлами из скачанного архива;
  6. Восстановите оригинальные разрешения на заменённых файлах. Включите наследование NTFS разрешений и установите владельцем файлов NT ServiceTrustedInstaller:
    icacls C:windowssystem32mstsc.exe /inheritance:e
    icacls C:windowssystem32mstscax.dll /inheritance:e
    icacls C:windowssystem32mstsc.exe /setowner "NT ServiceTrustedInstaller" /T /C
    icacls C:windowssystem32mstscax.dll /setowner "NT ServiceTrustedInstaller" /T /C
  7. Осталось перерегистрировать библиотеку:
    regsvr32 C:WindowsSystem32mstscax.dll

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

Windows Server 2016
Плохая производительность (тормозит) RDS и RemoteAPP в Windows Server 2019/2016