Как увеличить скорость удаленного рабочего стола

от admin

Remote Desktop: Убираем тормоза

Попробовал во время отпуска подключиться к удаленной машине и обнаружил, что удаленный рабочий стол очень сильно тормозит, задержка около 2 секунд. При этом пинг до машины всего 100 мс. Подключался с ноутбука на котором стоит Windows 8.1. На рабочей машине стоит Windows 7.

Как это исправить?

В итоге оказалось, что необходимо проделать следующее на клиенте (компьютере с Windows 8.1 в моем случае):
1) Запускаем командную строку от имени администратора.

2) Прописываем в ней следующую команду:

И перезагружаем компьютер. После перезагрузки проверяем работу удаленного рабочего стола.

В случае, если не поможет, то включить автонастройку параметров (значение по умолчанию) можно такой командой:

увеличить скорость доступа к удаленному рабочему столу windows

При уделенном доступе к рабочему столу Windows (Remote Desktop) может быть недостаточной скорость работы интерфейса.

Решение:

Видеокарта не используется при работе виртуальной машины. Потому не имеет смысла выбирать карту помощнее.

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

Как сделать работу с Microsoft Remote Desktop лучше

Хочу поделиться несколькими советами по настройке удаленного подключения к рабочим местам по 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

Но RDP 7 не работает по HTTP и UDP. Поможет только апгрейд клиента и сервера до 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)

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

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

Включите поддержку транспорта 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать:
Как написать отзыв в стиме

О проблемах

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проблемы с DPI

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

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

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

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

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

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

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

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

Как увеличить скорость удаленного рабочего стола

> netsh interface tcp show global

  • disabled: фиксация значения окна приема по умолчанию.
  • highlyrestricted: разрешение на увеличение окна приема относительно значения по умолчанию, но очень незначительное.
  • restricted: разрешение на увеличение окна приема относительно значения по умолчанию, с ограничением увеличения при некоторых сценариях.
  • normal: разрешение на увеличение окна приема в соответствии с требованиями большинства сценариев.
  • experimental: разрешение на увеличение окна приема в соответствии с требованиями экстремальных сценариев.

> netsh interface tcp set global autotuninglevel=highlyrestricted

> netsh interface tcp set global autotuninglevel=disabled

Почтовый сервер Шифрование Squid 3proxy VPN Mikrotik Настройка сервера Виртуальные машины kvm Защита почты Резервное копирование Групповые политики SELinux WDS IPFW OpenVPN firewalld systemd Mobile libvirt Samba WiFi Iptables NAT Lightsquid Remote desktop Postfix Dovecot Удаление данных Софт Безопасность Настройка прокси Winbox User agent Хостинг Передача данных Онлайн сервисы Privacy LetsEncrypt VPN сервер RRDTool sendmail Rsync Linux SSH Система Windows Синхронизация Облако fail2ban FreeBSD

Производительность RDP в Windows Server и способы ее повышения

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

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

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

Поделиться: facebooktwitterlinkedinvk

Похожие статьи