В этой статье я собрал несколько решений частных проблем с плохой производительностью RDS серверов или опубликованных RemoteApp приложений, с которыми я встречался в своей инфраструктуре. Прежде чем применять то или иное решение, проверьте что оно соответствует вашей инфраструктуре и окружению.
Падение производительности RDS в Windows Server 2016/2019 с UPD
На RDS серверах с Windows Server 2019/2016 с большим количеством пользователей можно столкнутся с плохой производительностью при использовании для профилей пользователей User Profile Disks.
Проблема заключается в том, в брандмауэре Windows Defender Firewall создаются новые входящие и исходящие правила при каждом входе пользователя, и эти правила не удаляется при завершении сессии.
Со временем количество таких правил в брандмауэре становится очень много, что вызывает существенное падение производительности RDS сервера (медленный вход в систему, черный экран при входе по RDP, зависают RDS хосты, не открываются меню и не отображается кнопка Пуск).
Проверьте количество правил в Windows Defender Firewall с помощью команды PowerShell:
(Get-NetFirewallRule).count
В моем случае на одном их хостов оказалось 18 тысяч правил! Эти правила создаются для UWP приложений магазина Windows при каждом входе пользователя.
Для исправления проблемы нужно сначала установить все обновления безопасности для вашей версии 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 -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 можно в утилитах настройки параметров мыши от вендора.
Если вы не можете уменьшить частоту опроса, попробуйте в настройках мыши в панели управления Windows (
main.cpl
) отключить тень курсора мыши (отключите опцию Enable pointer shadow) и выбрать схему None для указателя.
Медленно работают 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 -> Службы удаленных рабочих столов -> Узел сеансов удалённых рабочих столов -> Среда удаленных сеансов).
Также есть обходное решение, которое заключается в замене версии клиента RDP на более старую. Т.к. проблемы с производительностью Remoteapp встречались еще в Windows 10 1709, лучше всего использовать библиотеки RDP из 1607 или 1703.
Дело в том, что после апгрейда билда Windows 10 в системе устанавливается новая версия клиента RDP, которая на данный момент работает некорректно с опубликованными через RemoteApp приложениями.
Если заменить файлы mstsc.exe и mstscax.dll в каталоге C:\Windows\System32 на версии файлов из предыдущего билда Windows 10 (1703 или 1607), проблема с производительностью RemoteApp исчезает.
Как заменить файлы клиента 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 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
Это позволит временно исправить проблему с производительностью RemotApp в клиентах Windows 10.
Ну что-то в последнее время Microsoft прям особенно лютые апдейты выпускает.
То Exchange падает, то на Win10 синий экран, и прочее, прочее.
Печаль((
На Win 7 вообще перестал обновлять апдейты . На Win10 ставлю с 2-х недельной задержкой. Все апдейты только на ручном утверждении , никакого auto approved.
MS очень сильно стал косячить с апдейтами.
PS Кстати за много лет в IT, сотни серверов , тысячи компов , ни один комп не пострадал из-за какой-то уязвимости , зато много раз из-за апдейтов MS .
Не было печали — апдейтов накачали 🙂 В последнее время достал WSUS с глюками обнобновлений — в итоге вместо хорошо придуманной и работающей системы получаем очередной объект для плясок с бубном — поправьте тут, дуньте здесь, стукните там (только не сильно, а то всё рухнет)…. А хотелось бы, чтобы оно «просто работало»… Линуксовое sudo apt update и sudo apt upgrade вспоминаешь с теплотой…
В п.7 ошибочка reg32svr. Точнее — «regsvr32 C:\Windows\System32\mstscax.dll»
Спасибо, поправил.
Добрый день.
Провел выше указанную операцию на 4 машинах, на одной только помогло(
На трех cmd команды по смене прав на файл и тп не отрабатываются, при проведении манипуляций руками, а не командами результат нулевой.
Благодарю за труд! Очень востребовано. Совсем недавно на одной рабочей машине «всплыл» после обновления сей недуг, опытным путём была определена вина последней сборки 1803. С грядущей лавиной обновляемых ПК (особенно с 1С RemoteApp) хотя бы можно на время успокоиться.
Однако тенденция снижения стабильности и эффективности теперь уже обязательных обновлений вызывает определенную озабоченность.
Чтобы скучно не было — 1С в RemoteApps очень своеобразно с окнами работает.
regsvr32 не срабатывает. Говорит, что dll не от этой версии винды 🙁
Заметили интересный баг, после отключения данной политики на экрану у пользователей появляется черная точка в середине экрана, она не отображается в открытой сессии, но остается на рабочем столе если свернуть окно с сессией
Кто нибудь еще сталкивался?
Удалось ли решить ?
В этом апдейте пофиксили:
https://support.microsoft.com/en-us/help/4284848
Но судя по отзывам, осталась проблема у пользователей с 2 мониторами.
Пофиксили, но не до конца, и кстати, окно запуска remoteapp до сих пор кривое, только в билде 1607, оно было нормальным.
Терминальный сервер 2008 R2 SP1 обновленный. Remoteapp-приложение.
Примерно в мае возникла проблема у пользователей Win 10 сразу после какого-то обновления.
В процессе работы в remoteapp происходят переключения активного окна на другое приложение. Юзеров это раздражало. Пришлось тем кто в 10 дать стандартный рдп-доступ.
У остальных с Win 7 нет этой проблемы.
Похоже, Windows 7 повторяет историю Windows XP — удачная система, с Windows 10 — чем дальше, тем больше каких-то косяков и непонятных попыток скрестить ежа с ужом. На работе отказался от мысли пересадить пользователей на Windows 10 — Windows 7 более, чем устраивает.
1 в 1 проблема. Удалось выяснить в чем дело?
К сожалению не помогло мне) Подключаюсь к windows 10 1803 с машины на windows 7. Думаю что может мне поможет замена серверной части а не клиентской. После перезагрузки windows 10 все нормально, но через некоторое время начинается тупизм, который видно особенно при печати текста, отстает с перебоями.
В статье речь о замене файлов RDP-клиента на подключающейся стороне. У вас что-то другое — проблема на стороне RDP сервера. Возможно стоит попробовать файл termsrv.dll от более старой сборки Windows 10.
Начал ближе знакомиться с RDP, RemoteFX. Ранее имел дело с PCoIP.
Могли бы вы как опытный пользователь этих систем рассказать теорию что есть что.
Немного вставлю о том что я знаю.
Служба удаленных рабочих столов / RDS / Терминальный сервер это служба/программа майкрософт, которая установлена во многих версиях windows и занимается управлением удаленного доступа пользователей к ресурсам windows управляемой машины по протоколу удаленного доступа, конкретно — RDP, через порт по умолчанию 3389. Десктопные windows позволяют подключаться одному пользователю. Серверная windows позволяет по лицензиям подключаться множеству пользователей или устройств. Этот программный комплекс и протокол целиком имеют некоторые аналоги. Известные комплексы разрабатывают vmware и citrix. Стоимость этих продуктов не имеет никакого смысла их приобретать рядовым пользователям или среднему и малому бизнесу, потому что их стоимость значительно превышает стоимость владения windows server (или VDI ВМ) и лицензии удаленного доступа, а профита как такового не даёт. Протоколы типа VNC не оптимизируют трафик, а передают картинку как есть, что вызывает высокое потребление ресурсов и ширины канала сети. Стали появляться протоколы, которые работают поверх HTTPS. Всё это многообразие неструктурированно и не рассмотрено.
В связи с этим просьба поделиться вашим мнением какие протоколы и сервисы есть смысл рассмотреть для замены доступа к windows вместо RDP, имея на выходе качественное сжатие, картинку, скорость, но стоимостью не дороже лицензий windows.
И ещё вопрос по поводу RemoteFX. Используя этот термин мало кто расписывает что из себя это словосочетание представляет. По факту это набор программ для разделения ресурсов графической карты между виртуальными машинами на гипервизоре hyper-v, переброса usb устройств клиентов, кодек сжатия картинки и текста посредством ЦП и умение адаптировать методы обработки и сжатия информация в зависимости от нагрузки на сервере и в сети. На середине пути развития этого продукта была добавлена возможность использовать графические карты для аппаратного ускорения и модифицирован кодек для рендеринга контента. Также добавлена возможность передавать аудио и видео к клиенту, чтобы он сам обрабатывал это (затем добавлена функция отправлять это в виде потока кодека h264). И затем внезапно эта технология умирает в 2020 году. Майкрософт с тех начинает её выпиливать из windows. До этого я пользовался технологиями ESXI, vgpu, PCoIP для ВМ и не очень понимаю как работает в текущем виде в современных windows RDS. Что из компонентов windows, которые ранее относились к remotefx используются (на примере windows server 2019 2022, windows 10 сборок 2021 года) и будут в будущем использоваться, что из этих компонентов является действительно полезным. Перечислите пожалуйста службы из компонентов windows которые есть смысл включать, чтобы улучшить производительность и качество выходного сигнала с использованием GPU.
И третий вопрос, касается работы windows RDS и графического адаптера (без виртуальных машин). Сейчас очень много статей выходит о проблемах проброса графических карт в виртуальные машины, но я пришёл в реализацию удаленного доступа как раз из систем ВМ с проброшенными ГПУ и не очень понимаю как происходит одновременная работа пользователей windows server с графическим адаптером. Я правильно понимаю что все пользователи системы, открывая какие либо приложения, запускают различные процессы и те которые используют ресурсы процессоров видеокарты, используют их совместно, в порядке очередности обработки операций политик windows, а оперативную память графической карты, заполняют совместно, без ограничений как это происходит с ЦП и RAM сервера? Правильно ли я понимаю, что функции directx, opencl, opengl в windows server запускаются полноценно, как это происходило бы при работе одного пользователя на десктопе? Я пробовал включить в windows 10 и windows server в среде удаленных рабочих столов для использования аппаратной видеокарты для всех сеансов удаленных рабочих столов. Но после перезапуска, в диспетчере задач эта служба продолжает использовать ЦП и не использует GPU. Могли бы вы пояснить для чего именно этот компонент предусмотрен и как его правильно включить?
в powershell команде для создания ключа реестра дважды указали ключ -Path)
А за статью большое спасибо, удалили свои 60к+ правил, смотрим))
Всем привет!
Что из етого поста присутствует в RDS на базе WS2022 ?
А что нового появилось?)
у меня
лагает щас не понятно почему, правил 665, много или нет на 20 человек не знаю.
у Вас нет решения ?
Правил у вас не много, проблемы явно проявляются при тысячах.
Какие симптомы? ТОрмозит сессия, сервер или картинка замирает и сессия отваливается?
У меня ферма на 2016, постоянно жалуются на подвисание и тормоза. Правил 475, совсем маловато)
А вот ещё в тему тормозов и традиционного лечения перезагрузкой 🙂 Есть какой-то командлет, который бы запрещал\разрешал для подключения узлы RDSH? Чтобы можно было для профилактики постепенно вывести их и перезагрузить автоматически.
См. про RDS DRAIN mode
change logon /drain
_https://winitpro.ru/index.php/2020/12/29/rds-reshim-drain-mode-v-windows-server/