Windows server тормозит rdp

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

Содержание:

  • Падение производительности RDS в Windows Server 2016/2019 с UPD
  • Проблемы с мышью в RDP сессии на Windows Server 2019/2016 RDS
  • Медленно работают RemoteApp и отрисовываются меню в Windows 10

Падение производительности 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

В моем случае на одном их хостов оказалось 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 -> Службы удаленных рабочих столов -> Узел сеансов удалённых рабочих столов -> Среда удаленных сеансов).

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

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

Также есть обходное решение, которое заключается в замене версии клиента 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:

  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 в Windows 10 1803 / 1709.

    (в этом примере имя локальной учтённой записи с правами администратора – root. Замените ее на имя вашей учетной записи).

  5. Замените файлы в каталоге C:\windows\system32\ файлами из скачанного архива;
  6. Восстановите оригинальные разрешения на заменённых файлах. Включите наследование 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
  7. Осталось перерегистрировать библиотеку:
    regsvr32 C:\Windows\System32\mstscax.dll

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

TurboRemoteFX

Powershell script which changes Group Policy and Registry entries to increase RDP (Remote Desktop) performance. (Enabling RemoteFX and Hardware, ie. GPU, H.264/AVC Encoding)

Based on the following sources:

  • «Pushing Remote FX to its limits.» — Reddit r/sysadmin post by u/liquidspikes
  • «How to manage Local Group Policy with Powershell» — Blog post by Brandon Padgett, 2016
  • PolicyFileEditor — Github project by Dave Wyatt (dlwyatt)
  • «Optimizing RDP for casual use» — Blog post by Tedd Hansen, 2015
  • Remote Desktop Protocol (RDP) 10 AVC/H.264 improvements… — Blog post by Microsoft Enterprise Mobility + Security Team, 2018

Usage

Requirements:

  • You need to install the PolicyFileEditor Powershell Module. To do this run:

    PS> Install-Module -Name PolicyFileEditor -Scope CurrentUser

To make the Group Policy/Registry changes:

  1. Download and extract the files.

  2. Open Administrator PowerShell to that directory.

  3. Then run the following:

    PS> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process ; .\TurboRemoteFXHostGPO.ps1
  4. To assert the Group Policy changes run:

To undo the changes:

  • Follow the steps above except use the TurboRemoteFXHostGPO-inverse.ps1 script.

    PS> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process ; .\TurboRemoteFXHostGPO-inverse.ps1

Also recommended:

  • If using NVIDIA, you should also grab their extra driver to support OpenGL over RDP
    • You will need to make an Nvidia account to download this.
    • nvidiaopenglrdp.exe
    • Khronos Group article explaining more
  • Client side changes
    • When opening an RDP connection make the settings:
      • Network Type: LAN
      • Persistent Bitmap Caching: No

About

The scripts simply automate making changes in Group Policy and the Registry.

Equivalent gpedit.msc changes

All changes take place inside the path:

Local Computer Policy
\ Computer Configuration
  \ Administrative Templates
    \ Windows Components
      \ Remote Desktop Services
        \ Remote Desktop Session Host

From there, the following locations take changes:

In \Connections

Select RDP Transfer Protocols = Enabled
Set Transport Type to: "Use both UDP and TCP"

In \Remote Session Environment

Use hardware graphics adapters for all Remote Desktop Services Sessions = Enabled
Prioritize H.264/AVC 444 graphics mode for Remote Desktop Connections = Enabled
Configure H.264/AVC Hardware encoding for Remote Desktop Connections = Enabled
    Set "Prefer AVC hardware encoding" to "Always attempt"
Configure compression for Remote FX data = Enabled
    Set RDP compression algorithm: "Do not use an RDP compression algorithm"
Configure image quality for RemoteFX Adaptive Graphics = Enabled
    Set Image Quality to "High" (lossless seemed too brutal over WAN connections.)
Enable RemoteFX encoding for RemoteFX clients designed for Windows Server 2008R2 SP1 = Enabled.

In \Remote Session Environment\Remote FX for Windows Server 2008R2

Configure Remote FX = Enabled
Optimize visual experience when using Remote FX = Enabled
    Set Screen capture rate (frames per second) = Highest (best quality)
    Set Screen Image Quality = Highest (best quality)
Optimize visual experience for remote desktop sessions = Enabled
    Set Visual Experience = Rich Multimedia

These changes correspond to the following registry entries:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"SelectTransport"=dword:00000000
"bEnumerateHWBeforeSW"=dword:00000001
"AVC444ModePreferred"=dword:00000001
"MaxCompressionLevel"=dword:00000000
"ImageQuality"=dword:00000002
"fEnableVirtualizedGraphics"=dword:00000001
"VGOptimization_CaptureFrameRate"=dword:00000001
"VGOptimization_CompressionRatio"=dword:00000001
"VisualExperiencePolicy"=dword:00000001

You can check this by browsing regedit or using the Powershell Command:

Get-Item "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services"

Other registry tweaks

Not all of the configurations were available with GPO, so some other registry tweaks are made in TurboRemoteFXHost.reg

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"AVCHardwareEncodePreferred"=dword:0
"fEnableWddmDriver"=dword:00000000
; If issues, try WDDM driver enabled.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations]
"DWMFRAMEINTERVAL"=dword:15

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile]
"SystemResponsiveness"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD]
"FlowControlDisable"=dword:00000001
"FlowControlDisplayBandwidth"=dword:0000010
"FlowControlChannelBandwidth"=dword:0000090
"FlowControlChargePostCompression"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
"InteractiveDelay"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
"DisableBandwidthThrottling"=dword:00000001
"DisableLargeMtu"=dword:00000000

Хочу поделиться несколькими советами по настройке удаленного подключения к рабочим местам по RDP. Расскажу как проапгрейдить древний RPC-HTTP до UDP, похвалю и поругаю Windows 10 и AVC, разберу решение нескольких типичных проблем.

Считаем, что для подключения используется Remote Desktop Gateway (RDGW), а в качестве серверов выступают рабочие станции. Использовать RDGW очень удобно, потому что шлюз становится общей точкой входа для всех клиентов. Это дает возможность лучше контролировать доступ, вести учет подключений и их продолжительность. Даже если VPN позволяет подключиться к рабочим машинам напрямую — это не лучший вариант.

RDGW настраивается быстро, просто, а Let’s Encrypt и win-acme легко решают проблему с доверенным сертификатом.

Есть три транспортных протокола по которым клиент может подключиться с серверу:

RPC-HTTP (

плохо)
HTTP (лучше)
HTTP+UDP (отлично)

Под сервером будем понимать рабочую машину, под клиентом — домашнюю.
Первое, с чего стоит начать, это «плохо» превратить в «отлично».

Апгрейд RPC-HTTP до HTTP

Подключение в сессию с использованием RPC-HTTP легко определить по внешнему виду полоски подключения.

Здесь нет значка качества подключения (о нем ниже), а значит мы используем старый RPC, обернутый в TLS — это очень медленно. Дело, конечно, не только в обертке — сам протокол меняется с каждым релизом ОС, меняются кодеки, алгоритмы упаковки изображения. Чем свежее протокол, тем лучше.

Что делать?

Windows XP или Vista

В XP можно поднять протокол с 5.1 до 7. Хотфикс windowsxp-kb969084-x86.exe

В Vista — c 6 до 7. Хотфикс имеет тот же номер, файлы windows6.0-kb969084-x64.msu или Windows6.0-KB969084-x86.msu

Но RDP 7 не работает по HTTP и UDP. Поможет только апгрейд клиента и сервера до Windows 7 и новее.

Windows 7

Сначала надо обновить протокол до RDP 8.1, а затем включить его. Поддержка добавляется обновлениями, которые сгруппированы в один загрузочный пакет:

www.microsoft.com/en-US/download/details.aspx?id=40986
Windows6.1-KB2574819-v2-x64.msu
windows6.1-kb2592687-x64.msu
Windows6.1-KB2830477-x64.msu
Windows6.1-KB2857650-x64.msu

Windows6.1-KB2913751-x64.msu

(заменен kb2923545)

windows6.1-kb2923545-x64.msu

Так вы получите и свежий клиент mstsc.exe, и поддержку RDP 8.1 серверной части ОС.
Было:

Стало:

После этого протокол надо включить ключом реестра (для этого можно использовать adm шаблон в комплекте с Windows 7).

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"fServerEnableRDP8"=dword:00000001
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows NT\Terminal Services]
"fServerEnableRDP8"=dword:00000001

Включите поддержку транспорта UDP в групповой политике.

Перезагружаем сервер с Windows 7. Тот самый случай, когда может потребоваться перезагрузиться дважды — значение в реестре должно быть установлено до того, как включился RDP, а групповая политика применяется позже.

Если все получилось, то при подключении к серверу в полоске сессии появится иконка качества подключения (как в телефоне для мобильной сети):

Windows 8 и новее

Протокол работает «из коробки».

Апгрейд HTTP до HTTP+UDP

Если ваша сеть не склонна к потере пакетов, UDP существенно (для CAD — радикально) повышает отзывчивость сервера за счет использования FEC для сокращения ретрансмиссии, а также перехода подтверждения доставки пакетов с уровня системного стека TCP/IP на уровень протокола RDP-UDP.

От каждого клиента подключается одна основная управляющая сессия по HTTP (в этом канале также передается клавиатура/мышь), плюс одна или несколько сессий UDP для передачи картинки или других виртуальных каналов.

Мы коснемся только верхушки айсберга. Есть 3 различных версии протокола RDP-UDP. Кроме того, сам UDP может работать в двух режимах UDP-R (reliable) и UDP-L (lossy). С Microsoft ничего просто не бывает. Но поскольку от нас здесь ничего не зависит, просто имейте в виду — чем новее операционная система, теме более современный протокол используется.

Снаружи RDP-UDP оборачивается в Datagram Transport Layer Security (DTLS) RFC4347, в чем вы можете убедиться открыв Wireshark.

Подробнее в документах:
[MS-RDPEMT]: Remote Desktop Protocol: Multitransport Extension
[MS-RDPEUDP]: Remote Desktop Protocol: UDP Transport Extension
[MS-RDPEUDP2]: Remote Desktop Protocol: UDP Transport Extension Version 2
Где не прав — поправьте, пожалуйста.

Что же нужно для включения UDP?

RDP-UDP поддерживается начиная с RDP 8.

На клиенте должен быть открыт порт udp/3389. Если вы его закрыли локальным firewall, ACL на свитче или внешнем файрволле — порт надо открыть.

Для сервера Remote Desktop Gateway к порту tcp/443 надо открыть udp/3391.

Порт можно поменять, вот как он настраивается:

Для Windows 7 обязательно должен быть включен NLA (Network Level Authentication).

Можно включить в групповой политике

или через реестр

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
"SecurityLayer"=dword:00000001

В чем связь непонятно. Но без NLA на 7-ке не работает, на более свежих релизах NLA для работы UDP не обязателен.

После установления сессии по HTTP, клиент и сервер пробуют согласовать подключение по UDP. Если есть выпадение пакетов или задержки, то сессия UDP не запустится. Точный алгоритм отказа согласования UDP до конца не понятен.

Если все настроено, то после подключения нажмите на кнопку качества связи. В окошке будет указано, что согласован UDP.

На шлюзе это выглядит так:

Windows 10

Если у вас Windows 10 и на сервере, и на клиенте, то это самый быстрый и беспроблемный вариант. В Microsoft активно дорабатывают RDP, и в свежих релизах 10 вы можете рассчитывать на неплохую скорость работы. Коллеги не смогли обнаружить разницу между Citrix и Windows 10 RDP по скорости работы в AutoCAD.

Про эволюцию кодеков RDP на базе AVC в Windows 10 есть хорошая статья
Remote Desktop Protocol (RDP) 10 AVC/H.264 improvements in Windows 10 and Windows Server 2016 Technical Preview

Согласование AVC с аппаратным кодированием можно увидеть в журнале событий (подробнее в статье выше):

Замечу только, что проблема искажений все же есть даже с h.264 4:4:4. Она сразу бросается в глаза если работать в PowerShell ISE — текст ошибок выводится с неприятным искажением. Причем на скриншоте и на фотографии все отлично. Волшебство.

Также косвенным признаком работы AVC являются время от времени появляющиеся зеленые квадраты по углам.

AVC и аппаратное кодирование в свежих билдах должно работать из коробки, но групповая политика никогда не бывает лишней:

С учетом того, что AVC кодируется аппаратно видеокартой, то обновить драйверы видео — хорошая идея.

О проблемах

XP и Vista

Если проблема возникает на Windows XP или Vista, попробуйте сначала обновить протокол до 7 версии (писал в начале статьи). Обязательно включите поддержку CredSSP. На сайте Microsoft статьи уже удалены, но Интернет помнит.

Если не помогло — «доктор говорит в морг, значит в морг». Что испытала на себе операционная система за последние 15 лет — лучше об этом даже и не думать.

NLA

Иногда помогает отключение NLA на сервере. Выяснить причину не получилось, домашние машины все разные.

NTLM

Некоторые клиенты пытаются авторизоваться с использованием NTLMv1. Причины разные, но исправить на клиенте можно так:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"LmCompatibilityLevel"=dword:00000003

Перезагрузка обязательна.

Если вы

молоды и дерзки

ничего не боитесь, то есть более радикальное решение — отключение Channel Binding на Remote Desktop Gateway

HKLM\Software\Microsoft\Windows NT\CurrentVersion\TerminalServerGateway\Config\Core
Type: REG_DWORD
Name: EnforceChannelBinding
Value: 0 (Decimal)

Делать так не надо. Но мы делали. :-) Для клиента, который настаивал (нет не так, НАСТАИВАЛ) что NTLMv1 на рабочих станциях ему необходим. Не знаю, может там серверы на NT4 без SP еще в работе.

Отключение RDP 8+ в Windows 10

Если ничего не помогает, а идеи кончились, можно воспользоваться недокументированным ключом для даунгрейда протокола RDP до 7 версии.

[HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client]
"RDGClientTransport"=dword:00000001

Сам не делал, и вам не советую. Но кому-то, пишут, что помогает.

DrWeb

Компонент Dr.Web SpIDerGate может запретить подключение. В этом случае возвращается ошибка:

В статистике Dr.Web будет запись:

В комментариях к этой статье со мной связался сотрудник Dr.Web и наша проблема решилась в ближайшем обновлении антивирусных баз.
Если у вас такая же ошибка, лучше обратиться в поддержку.
Как временное решение, можно внести URL вашего RDGW в исключения:

И только если не помогло отключить компонент SpIDer Gate полностью.

Системный прокси

Встретился списанный компьютер из какой-то компании, где в качестве системного прокси был прописан местный TMG, и подключение к RDGW не работало. Это можно исправить так:

netsh winhttp show proxy && netsh winhttp reset proxy

Переключение раскладок клавиатуры

Иногда приезжают лишние раскладки. Можно отключить проброс раскладки с клиента

[HKLM\System\CurrentControlSet\Control\Keyboard Layout]
"IgnoreRemoteKeyboardLayout"=dword:00000001

Проблемы с DPI

Масштабирование приходит с клиентской машины, и если на домашнем ноутбуке стоит 125%, то и на рабочей машине будет так же. На серверах это можно отключить, а на рабочих станциях не нашел как. Но в магазине приложений Windows 10 есть «современный» клиент.

В нем можно настроить DPI:

Как мониторить шлюз с RDGW

Есть счетчик производительности «Шлюз служб терминалов\Текущие подключения», который немного глючит, если нет подключений или сервер долго не перезагружался. Он показывает именно число подключений, но как мы помним, для HTTP+UDP их как минимум два, а может быть и больше. Поэтому это не совсем объективный показатель числа подключений сотрудников.

Есть класс WMI Win32_TSGatewayConnection. Его содержимое соответствует тому, что вы видите в разделе «Наблюдение» шлюза удаленных рабочих столов.

С ним число подключений можно посчитать поточнее:

Get-WmiObject -class "Win32_TSGatewayConnection" -namespace "root\cimv2\TerminalServices" 
|?{$_.transportprotocol -ne 2}|select username,connectedresource|sort username|Get-Unique -AsString| measure|select -ExpandProperty count

Just for fun есть утилита Remote Display Analyzer. Бесплатная версия мне ничего полезного не показала, но вдруг кому-то пригодится.

А как же тонкий тюнинг, настройка нескольких десятков параметров сессии?

Здесь уместен принцип Парето: 20% усилий дают 80% результата. Если вы готовы инвестировать ваше время в оставшиеся 20% результата — отлично. Только имейте в виду, что когда вы читаете статью о настройке протокола в Windows 7, то не знаете про какой протокол писал автор — 7, 8 или 8.1. Когда читаете про Windows 10 без указания релиза — проблемы те же. Например, пишут что в свежих билдах Windows 10 кодек AVC/h.264 изменился на RDPGFX_CODECID_AVC444V2, а в Windows Server 2016 остался RDPGFX_CODECID_AVC444.

Из всех таких советов мы используем только две настройки:

  1. 16 bit цвет, об этом можно почитать в статье MS RDP Performance / Bandwidth Usage
  2. Отключение сглаживания шрифтов font smoothing:i:0 по статье выше или Performance Tuning Remote Desktop Session Hosts

Сомневаюсь, что они дают какой-то ощутимый результат.

Вот мы и подошли к концу статьи. Хотел покороче, а получилось как всегда. Рад, если кому-то эти советы помогут сэкономить время или улучшить настройку своей инфраструктуры.

Эта статья актуальна для Windows Server 2019 в качестве сервера и Windows 10 в качестве клиента RDP. В статье мы рассмотрим шаги, которые следует предпринять для достижения максимальной производительности терминальных сессий RDP в Windows Server.

1. Коротко об основном

В Windows 10 вместе с стандартным клиентом удаленного стола (MSTSC), появился новый клиент для осуществления удаленных подключений Remote Desktop (MSRDC) client, проинсталлировать который можно из магазина Microsoft Windows 10.

Отметим, что изначально MSRDC поддерживал удаленные подключения с Windows Virtual Desktop (VDI). На данный момент существуют клиенты для Windows Desktop, Android, iOS, macOS.

Можно сравнить два типа клиентов для удаленных подключений – MSTSC и MSRDC.

Тестирование проводилось на виртуальных машинах с Windows Server 2019 и Windows 10.

В качестве теста копировался файл с клиента на сервер. По итогу тестирования имеем такие результаты – копирование с помощью MSTSC:

Повышение производительности

Повышение производительности

Для сравнения – скриншоты процесса копирования файла с помощью MSRDC:

Повышение производительности

Повышение производительности

Как видим, файл копируется быстрее с помощью mstsc, но при этом mstsc создает значительно более высокую нагрузку на сеть и ЦП, занимая практически все доступные ресурсы. При этом использование нового клиента MSRDC выглядит более предпочтительным, т.к. при большом количестве одновременных подключений будет создавать более пологий график нагрузки на системные ресурсы, чем MSTSC.

С другой стороны, хочется отметить «сырость» нового клиента для удаленных подключений. К примеру, копирование файлов с сервера на клиент попросту не работает. При этом оба клиента используют протокол TCP для подключения к серверу.

2. Сжатие передачи данных при подключении к серверу

Для клиентов RDP можно настроить сжатие передачи данных при подключении к серверу.

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

Конфигурация компьютера → Административные шаблоны → компоненты Windows→ Службы удаленных рабочих столов → Удаленный рабочий стол узле сеансов → Среда удаленного сеанса → Настроить сжатие для данных RemoteFX.

Есть возможность оптимизировать работу сервера за счет оптимизацию работы памяти, пропускной способности сети, баланс памяти и пропускной способности сети, либо отключить механизм сжатия.

Для эксперимента попробуем оптимизировать работу за счет оптимизации работы пропускной способности сети.

Меняем параметр и перезагружаем сервер:

Повышение производительности

Смотрим, что получилось для MSTSC:

Повышение производительности

Как видим – ничего не поменялось. Это потому, что данный механизм будет заметен только на большом количестве подключений. Тогда-то мы и увидим уменьшение потребления пропускной способности сети.

3. Отключение перенаправленных устройств

Настройка с помощью GPO находится в:

Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удаленных рабочих столов → Удаленный узел сеансов рабочего стола → Перенаправление устройств и ресурсов.

Здесь можно включить или отключить параметры перенаправления для клиентских устройств. В том числе – видеозахват, воспроизведение и запись звука, буфер обмена, перенаправление com портов, перенаправление LPT-портов, локальных дисков, самонастраивающихся устройств, устройств чтения смарт карт и перенаправления часового пояса.

Чем больше перенаправленных устройств используется, тем больше пропускной способности сети сервера они поглощают.

Перенаправленные принтеры и устройства Plug & Play потребляют ресурсы процессора также при входе в сеанс RDP.

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

4. Параметры интерфейса клиента

  • Отключить фоновый рисунок, это значительно снизит потребление пропускной способности сети.
  • Кеш точечных рисунков необходимо всегда включать, т.к. в этом случае создается клиентский кэш растровых изображений, отображаемых в сеансе, что значительно снижает использование пропускной способности.
  • Имеет смысл выключать отображение содержимого окон при перетаскивании, т.к. это снижает нагрузку на сеть за счет отображения только рамки окна вместо всего содержимого.
  • Точно так же стоит отключать анимацию меню и окон, поскольку она увеличивает нагрузку на сетевую подсистему
  • ClearType нужно включать для систем более ранних, чем Windows 7 и Windows 2008 R2
  • Стили оформления – параметр, актуальный для систем Windows 7 и более ранних. Если параметр отключен, пропускная способность снижается за счет упрощения чертежей, использующих классическую тему.
  • Серьезно влияет на загрузку ЦП и пропускной способности сети и разрешение экрана, с которым клиент подключается к серверу.
  • Корпорация Microsoft рекомендует оставлять параметры подключения клиента в автоматическом режиме, но есть смысл попробовать выставить параметры вручную.

Например, если вы выставите на клиенте настройку «Подключаться со скоростью модем 56 Кбит/с – это отключит множество визуальных эффектов и значительно ускорит работу сервера в контексте подключения большого числа клиентов RDP.

5. Параметры конфигурации сервера RDP

  • Файл подкачки на сервере должен иметь достаточный размер. При нехватке виртуальной памяти в работе сервера могут возникать сбои.
  • Антивирус может значительно замедлить работу системы. Особенно серьёзно он может влиять на загрузку ЦП. Есть рекомендация исключать папки с временными файлами, особенно те, которые создаются системой.
  • Планировщик заданий может содержать большое количество заданий, ненужных на сервере RDS. Их есть смысл отключать.
  • На сервере RDS рекомендуется отключать все уведомления рабочего стола, поскольку они могут потреблять значительное количество системных ресурсов.

Эта статья была полезной?

Также читайте

Previous

Next

Best RDP Optimization on the terminal server

This optimization document helps optimize the RDP protocol for low bandwidth environments thus improving performance while accessing resources over RDP.

Various changes concerning the policies which may be applied and registry changes to be made are described here.

NOTE: All the below-mentioned changes are tested for Windows 7, 8,10, server 2k12R2, and 2k16.

Procedure

Server-Side Settings

Please follow the below steps.

  • Open “Group Policy MMC Snap-in” on your policy server
  • Start  > Run >  “gpedit.msc”
  • Navigate to “Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment”.
  • Enable the following settings:

Limit maximum color depth = 15bit

Enforce Removal of Remote Desktop Wallpaper = true

Set Compression Algorithm for RDP data = optimized to use less network bandwidth

Configure Image Quality for RemoteFX Adaptive Graphics = Medium

Under “Remote Session Environment > RemoteFX for Windows Server 2008 R2”.

Optimize Visual Experience when using RemoteFX = (Screen Capture Rate: Lowest + Image Quality: Lowest)

Optimize Visual Experience for Remote Desktop Service Sessions = (Visual Experience = Text)

The above settings are known to improve the RDP performance as it reduces the use of network bandwidth and both server/client load on processing the RDP data.

  • We can also configure the below settings to restrict the redirection of additional resources between the server and client machine. (e.g.: If there is no need for redirecting the local printer, one can disable printer redirection)
  • “Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Device and Resource Redirection”.
  • The above applies for “Printer Redirection” section as well. “Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Printer Redirection”

Do not set default client printer to be default printer in a session = (Set it to “Enabled”)

Do not allow client printer redirection = (Set it to “Enabled”)

Redirect only the default client printer = (Set it to “Enabled”)

  • After applying the above changes go-to Start > Run > “gpupdate /force”. Log-off and log in again for the changes to be applied.

General Settings:

System Performance Settings

For boosting the overall system performance make the following changes in both client and server machine.

  • Open System properties (right click ‘My Computer’ > Properties).
  • Navigate “Advanced system settings > Advanced Tab > Settings Button > Visual Effect Tab”.
  • Select the radio button name “Adjust for best performance”.
  • If you’re a fan of “Anti-Aliased Font” (Clear Type Text), you can choose the “Custom” radio button with only “smooth edges of screen fonts” checked.

Page file

Insufficient page file size can cause memory allocation failures in apps or system components. You can use the memory-to-committed bytes performance counter to monitor how much committed virtual memory is on the system.

Antivirus

  • Installing antivirus software on an RD Session Host server greatly affects overall system performance, especially CPU usage.
  • We highly recommend that you exclude from the active monitoring list all the folders that hold temporary files, especially those that services and other system components generate.

Task Scheduler

  • Task Scheduler lets you examine the list of tasks that are scheduled for different events.
  • For an RD Session Host server, it is useful to focus specifically on the tasks that are configured to run on idle, at user sign-in, or on session connect and disconnect. Because of the specifics of the deployment, many of these tasks might be unnecessary and better to be disabled.

Desktop Notification Icons

  • Notification icons on the desktop can have an expensive refreshing mechanism. You should disable any notifications by removing the component that registers them from the start-up list or by changing the configuration on apps and system components to disable them.
  • You can use Customize Notifications Icons to examine the list of notifications that are available on the server.

RemoteFX data Compression

Microsoft RemoteFX compression can be configured by using Group Policy:

  • “Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment > Configure compression for RemoteFX data”.  Three values are possible:
  • Optimized to use less memory Consumes the least amount of memory per session but has the lowest compression ratio and therefore the highest bandwidth consumption.
  • Balances memory and network bandwidth Reduced bandwidth consumption while marginally increasing memory consumption     (approximately 200 KB per session).
  • Optimized to use less network bandwidth further reduces network bandwidth usage at a cost of approximately 2 MB per session. If you want to use this setting, you should assess the maximum number of sessions and test to that level with this setting before you place the server in production.

You can also choose to not use a RemoteFX compression algorithm.

Choosing to not use a RemoteFX compression algorithm will use more network bandwidth, and it is only recommended if you are using a hardware device that is designed to optimize network traffic.

Even if you choose not to use a RemoteFX compression algorithm, some graphics data will be compressed.

Drag only the Outline of the window

  • Probably the most expensive operation in RDP is dragging a window around. A simple way to save WAN bandwidth is to show only the outline when dragging a window.
  • Start > Run > “regedit”. Navigate to HKEY_CURRENT_USER > Control Panel > Desktop and change DragFullWindows to 0.
  • Reboot for the changes to take effect.

Disable ClearType Fonts

ClearType fonts improve the readability of text on the screen, but also consume extra bandwidth.

To disable ClearType fonts

  • Open Control Panel > Appearance > Fonts > Adjust ClearType text
  • Deselect “Turn on ClearType” to disable ClearType fonts and click then click Next.
  • This will begin a wizard which will ask you to select the font samples that look best on your screen. Here we have just kept the default settings as they look best on our screen.
  • This change can reduce the bandwidth by up-to 10%.

Improving RDP – Slow initial Connection time.

One reason behind RDP connection lag occurs on machines that cannot access the internet.

This is because the remote desktop reaches out to the internet to check for root certificates that may have been revoked. Since the machine cannot get out to the internet, it sits there until time-out, and then your RDP connection proceeds.

FIX: For machines that cannot access the internet, make the following changes in your group policy.

  • Computer Configuration > Administrative Templates > System > Internet Communication Management > Internet Communication Settings.
  • Configure the setting for “Turn off Automatic Root Certificates Update” set it to ENABLED.

Another fix for RDP- slow initial connection

  • If you have a file with the “(dot)rdp” extension, edit the file using notepad and add the following line minus the quotes:

“enablecredsspsupport:i:0”

PDF Slow Display Performance 

Issue:

When viewing PDF files in Adobe Acrobat or Adobe Reader in a Terminal Server /Accops Session Host environment, the display is slow to update over an RDP connection. This issue is particularly noticeable when scrolling through PDF documents that contain high-resolution images.

Solution 1:

Update the Page Display preferences in Acrobat or Reader.

Change the following settings in Acrobat or Reader. You can either disable these options directly in Reader/Acrobat

  • “Edit > Preferences > Page Display > Rendering”

Or using the registry keys for system administrators:

Deactivate 2D Graphics acceleration

  • HKCU\Software\Adobe\Acrobat Reader\9.0\AVDisplay – bUse2DGPUf=dword:0

Deactivate Smooth images

  • HKCU\Software\Adobe\Acrobat Reader\9.0\Originals – bAntialiasImages=dword:0

Deactivate Smooth line art.

  • HKCU\Software\Adobe\Acrobat Reader\9.0\Originals – bAntialiasGraphics=dword:0

Set Smooth Text to None (Optional: some users have reported acceptable performance without setting Smooth Text to None).

  • HKCU\Software\Adobe\Acrobat Reader\9.0\Originals – bAntialiasText=dword:0
  • HKCU\Software\Adobe\Acrobat Reader\9.0\Originals – iAntialiasThreshold=dword:0
  • HKCU\Software\Adobe\Acrobat Reader\9.0\Originals – benableDDR=dword:0

NOTE: 

  • Changing registry values is not officially supported by Adobe and you do so at your own risk.
  • One should only be changing the registry settings if you have the correct privileges and experience in this area.
  • System Administrators should change these settings first using the Preferences dialog in Adobe Reader (not using the registry) and re-test the performance.
  • Once you have the right combination of settings that work, then you should record the values of these registry keys to use for your other Reader installations.
  • This is important as the value of the iAntialiasThreshold key can differ (0, 1, or 12) depending on which of the other options are deactivated.

These settings will improve the display performance on low-bandwidth connections, however, they can adversely affect the display performance on LAN connections. You will need to test these thoroughly.

Solution 2:

Server-side

In REGISTRY

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD

flow control 1

flow control diplay 80

flow control channel 20 (we used 175)

flow control forced compression 0

  • CHANGES

FlowControlDisable = 0.

FlowControlChargePostCompression = 0

HOT FIX

  • Hot Fix applied – Windows6.1-KB981156-x64.msu

Client-side

In ACROBAT settings

  • view/page display change from page display, single page to single-page continuous
  • Edit / preferences / rendering: smooth text – none

In REGISTRY

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD

flow control 1

flow control diplay 80

flow control channel 20

flow control forced compression 0

  • CHANGES

FlowControlDisable = 0.

FlowControlChargePostCompression = 0

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

New: DWORD “EnableTCPA”

Value: 0

Solution 3:

  • Under Edit > Preferences:

Page Display > Smooth Text > None

  • Making your text more beautiful takes time, it might have an impact on your performance.

Page Display > Enhance thin lines > Unchecked

  • Like text, 2D acceleration might have an impact too.

Page Display > Use 2D graphics acceleration > (Un)checked

  • It’s essential to try both states here, who knows your CPU is faster and thus software-base is faster.
  • If you uncheck this, you might want to uncheck Smooth line art and Smooth images too.

Slow Scrolling through the browser in RDP session

Solution1:

Changing the compression algorithm

  • Type in the search bar at the start menu: “gpedit.msc”.

Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment.

Disabling the TCP auto-tuning (for Windows Vista+ host)

  • Open cmd.exe as administrator.
  • Type in: netsh interface TCP set global autotuning=disabled
  • To check if it worked: netsh interface tcp show global

To re-enable:

  • netsh interface TCP set global autotuning=normal

Solution 2:

Graphics hardware acceleration

  • On the remote system:

Classic Tools menu > Options > Advanced

On the “General” mini-tab, uncheck the box for “Use hardware acceleration when available”

Then restart Firefox.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Активация windows 10 pro x64 по телефону
  • Samsung ml 1615 драйвер для windows 10 официальный сайт
  • Как переместить пользовательские папки на другой диск в windows 10
  • Windows не может отформатировать sd карту как исправить
  • Трм модуль для windows 11