
В этой статье я собрал несколько решений распространенных проблем производительности RDS-серверов или опубликованных RemoteApp, с которыми я столкнулся в своей инфраструктуре. Прежде чем применять любое из решений или обходных путей, проверьте, подходит ли оно для вашей инфраструктуры и среды.
Исправление производительности RDS на Windows Server 2016/2019 с помощью UPD
RDS-серверы под управлением Windows Server 2019/2016 с большим количеством пользователей могут иметь низкую производительность при использовании User Profile Disks.
Проблема заключается в том, что при каждом входе пользователя в систему в брандмауэре Windows Defender создаются новые правила для входящих и исходящих соединений. Эти правила брандмауэра не удаляются автоматически, когда пользователь выходит из системы.
Со временем в брандмауэре появляется множество дублирующих правил, что приводит к резкому снижению производительности RDS-сервера (медленный вход в систему, зависание RDS-хостов, не открываются меню и не появляется кнопка «Пуск»).
Проверьте количество правил в брандмауэре Windows Defender с помощью команды PowerShell:
(Get-NetFirewallRule).count
В моем случае на одном из хостов 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
Не забудьте вручную очистить входящие и исходящие правила в брандмауэре 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/RemoteApp из-за высокой частоты опроса мыши
Многие пользователи жалуются на низкую производительность сеансов RDP, высокую задержку и задержки мыши после переноса фермы RDS на Windows Server 2019. Мышь очень медленно реагирует на движения, курсор дрожит и замирает.
Эта проблема может быть связана с высокими настройками DPI и частоты опроса некоторых оптических мышей (обычно игровых). Например, у популярной мыши Logitech G203 частота опроса по умолчанию составляет 1000 раз в секунду (1000 Hz
). Высокая частота опроса мыши приводит к высокой нагрузке на RDP-соединение, и вы можете столкнуться с задержками при работе с RemoteApps. Если уменьшить это значение до 125 раз в секунду (125 Гц), проблема с мышью в сеансе RDP исчезнет.
Вы можете уменьшить частоту опроса, используя инструменты мыши производителя.
Если вы не можете уменьшить частоту опроса, попробуйте отключить тень курсора мыши (снимите флажок Включить тень указателя ) и выберите Нет схема для указателя в настройках мыши в панели управления Windows (main.cpl
).
Медленные лаги RemoteAPP, мыши и меню после обновления Windows 10
После обновления сборки Windows 10 у пользователей могут возникнуть проблемы с производительностью RemoteApps, опубликованных на RDS-серверах Windows Server 2019/2016/2012R2. RDS RemoteApps могут начать работать значительно медленнее, любое действие, вызванное щелчком мыши, выполняется (отрисовывается) в 2-3 раза дольше, а контекстные меню в RemoteApps отображаются медленно (пункты меню мигают, на них приходится нажимать несколько раз, иногда они вообще не появляются). Аналогичные проблемы возникали при обновлении сборок Windows 10 на клиентах до 1803 и 20H2.
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).
Однако есть и обходной путь — заменить версию клиента 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?
- Закройте все RDP-соединения и запущенный RemoteApp (лучше даже перезагрузить компьютер);
- Скачайте архив с версиями mstsc.exe и mstscax.dll из сборки Windows 10 1607 (mstsc-w10-1607.zip);
- Скопируйте оригинальные файлы 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 - Затем вам нужно назначить свою учетную запись владельцем файлов 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
В этом примере имя локальной учетной записи с правами администратора root. Замените его именем вашей учетной записи. - Замените файлы в каталоге C:\windows\system32\ на файлы из архива;
- Восстановите исходные разрешения на скопированные файлы. Для этого включите наследование разрешений 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 - Осталось перерегистрировать библиотеку::
regsvr32 C:\Windows\System32\mstscax.dll
Это временно устранит проблему производительности RemoteApp на клиентах Windows 10.