Оптимизация терминального сервера Windows: полное руководство по ускорению RDS
Терминальный сервер — сердце бизнеса для десятков компаний. Наши инженеры оптимизировали более 50 терминальных серверов, и в большинстве случаев производительность вырастала в 2-3 раза. Без замены железа.
Почему тормозит терминальный сервер?
- Нехватка RAM: на 20 пользователей с 1С нужно минимум 64 ГБ — и это не про запас, а про нормальную работу
- HDD вместо SSD — в 2024 году это просто приговор для терминалки
- Антивирус сканирует файлы 1С в реальном времени и съедает до 30% дисковых операций
- Принтеры через RDP: каждый редиректированный принтер — это лишний драйвер и лишний риск подвесить сессию
- Профили по 10 ГБ — пользователи годами копят в AppData всё подряд, и никто за этим не следит
- WSUS скачивает обновления днём, прямо в разгар рабочего дня
Как рассчитать ресурсы?
- CPU: закладывайте 0.5-1 ядро на пользователя, для 1С — строго 1 ядро, меньше не работает нормально
- RAM: 2-4 ГБ на пользователя плюс 8 ГБ под саму ОС — это минимальная точка отсчёта
- Диск: только NVMe SSD, RAID 1 или RAID 10 — крутилки на терминальном сервере мы не ставим уже лет семь
- Сеть: 10 Гбит/с между сервером и коммутатором — без вариантов
Как оптимизировать RDS Session Host?
# GPO:
# Restrict to single session -> Enable
# Disconnected session timeout: 2 hours
# Idle session timeout: 4 hours
# Limit color depth: 16 bit
# Remove Desktop Wallpaper: Enable
Как оптимизировать профили (FSLogix)?
# FSLogix Profile Containers:
# Enabled: Yes
# VHD Locations: \\fileserver\fslogix\profiles
# Size: 30000 MB
# Dynamic VHD: Enable
# Delete local profile: Enable
# Результат: вход 5-10 секунд вместо 1-2 минут
Как оптимизировать антивирус?
# Исключения для 1С:
Add-MpPreference -ExclusionPath "D:\1CBase"
Add-MpPreference -ExclusionPath "C:\Users\*\AppData\Local\1C"
Add-MpPreference -ExclusionProcess "1cv8.exe"
Add-MpPreference -ExclusionProcess "rphost.exe"
Доверьте оптимизацию терминального сервера профессионалам
Наши инженеры настроят всё быстро и надёжно. Более 15 лет опыта, работа с юрлицами, договор, SLA. Не тратьте время на эксперименты — звоните.
Как решить проблему с принтерами?
# Вариант 1: Easy Print (рекомендуем)
# Use Remote Desktop Easy Print printer driver first: Enable
# Redirect only the default client printer: Enable
# Вариант 2: Отключить редирект, ставить принтеры на сервере
# Чистка застрявших заданий
Stop-Service Spooler
Remove-Item "C:\Windows\System32\spool\PRINTERS\*" -Force
Start-Service Spooler
Как оптимизировать 1С?
- Базы — только на SSD, никаких сетевых шар на медленных дисках
- Режим тонкого клиента снижает нагрузку на сервер ощутимо — особенно при большом числе сессий
- Регламентные задания — на ночь, желательно после 01:00
- Максимум 2 фоновых задания в rmngr одновременно — больше только если хотите дневные тормоза
- Регулярная очистка кэша 1С — про это все знают, но делают единицы
Как мониторить производительность RDS?
Процессор, свободная память и очередь диска показывают, что серверу тяжело, но не отвечают на вопрос «тормозит ли у пользователя». Для этого на Windows Server 2019 и новее я добавляю счётчики User Input Delay: они измеряют, сколько ввод с клавиатуры или мыши простоял в очереди, прежде чем приложение его забрало. На Windows Server 2019+ и Windows 10 1809+ ключ реестра EnableLagCounter включать не нужно — счётчики доступны сразу.
Есть два набора: User Input Delay per Process (экземпляры в формате SessionID:ProcessID <имя процесса>, процессы от SYSTEM не показываются) и User Input Delay per Session — по экземпляру на каждую сессию плюс Max и Average по всем сессиям. Счётчик отдаёт максимальную задержку за интервал, а не среднюю, потому что пользователь запоминает именно самое долгое зависание. Интервал по умолчанию — 1000 мс; если в Perfmon поменять частоту выборки, на старых системах нужно выставить такой же LagCounterInterval, иначе значения будут неверными.
Как читаю картину: если задержка ввода растёт вместе с загрузкой CPU и числом сессий — сервер упёрся в процессор. Если CPU спокоен, а задержка скачет только в одной сессии — ищу процесс этой сессии через per Process.
Get-Counter -Counter "\User Input Delay per Session(Max)\*", "\User Input Delay per Session(Average)\*" -SampleInterval 1 -MaxSamples 60
Get-Counter -Counter "\Processor(_Total)\% Processor Time", "\Memory\Available MBytes", "\PhysicalDisk(_Total)\Avg. Disk Queue Length", "\Terminal Services\Active Sessions"
Как настроить Fair Share CPU?
# GPO: Turn off Fair Share CPU Scheduling: DISABLED (Fair Share ON)
# Повысить приоритет 1С:
Get-Process rphost | ForEach-Object { $_.PriorityClass = "AboveNormal" }
Оптимизация сети для RDS
Вот момент, который упускают чаще всего — качество сети между клиентом и сервером. Полоса пропускания тут вообще не главное. Главное — латентность. Уже при задержке больше 100 мс RDP начинает «плыть», и никакое железо это не исправит. Мы настраиваем QoS на коммутаторах так, чтобы трафик RDP (порт 3389) шёл в приоритете. Для удалённых филиалов используем RDP Shortpath через UDP — на практике это даёт снижение латентности на 20-40% по сравнению с TCP, и пользователи разницу чувствуют сразу.
Планирование обновлений Windows на RDS
Обновления Windows — отдельная боль. Мы видели, как cumulative update в 11:00 в среду клал терминальный сервер на полтора часа. Настройте WSUS или Intune с чётким окном обслуживания: пятница 23:00 — суббота 06:00. Автоперезагрузку — только вне рабочего времени. Автообновление драйверов через GPO отключите обязательно: именно они чаще всего приводят к BSOD на терминалках. И ещё один момент — каждое cumulative update сначала на тестовый сервер, потом в production. Да, это дольше. Зато предсказуемо.
Какие параметры FSLogix я проверяю в реестре
Настройки FSLogix для профилей лежат в HKLM\SOFTWARE\FSLogix\Profiles. Прежде чем что-то менять, сверяю значения по умолчанию из справочника Microsoft — многие вещи уже включены и прописывать их не нужно:
SizeInMBs— по умолчанию 30000, то есть около 30 ГБ. Это потолок: если профиль вырастет больше, у пользователя начнутся ошибки.IsDynamic— по умолчанию 1: файл VHD занимает на диске только фактически использованное место, но всё равно не большеSizeInMBs.VolumeType— по умолчанию vhd. Для новых внедрений ставлю vhdx.DeleteLocalProfileWhenVHDShouldApply— по умолчанию 0. Значение 1 удаляет локальный профиль пользователя, если он совпадает с контейнером, — без этого при переходе на FSLogix старые локальные профили мешают загрузке контейнера.FlipFlopProfileDirectoryName— формат имени папки (по умолчанию%sid%_%username%). Меняю только до появления первых контейнеров: после смены FSLogix не найдёт старые папки и создаст пустые профили. Данные при этом не теряются, но пользователи «теряют» рабочий стол до ручного переноса.
Как быстро найти, кто нагружает сервер
Когда звонят «всё висит», начинаю не с Perfmon, а со списка сессий. Встроенные команды Windows Server отвечают на главный вопрос за минуту:
# кто подключён, состояние сессии и время простоя
query user /server:RDS01
# какие процессы запущены в сессии 5
query process /id:5 /server:RDS01
# предупредить и завершить зависшую сессию 5
msg 5 /server:RDS01 "Сессия будет завершена через 5 минут"
logoff 5 /server:RDS01 /v
query user показывает имя, ID сессии, состояние (активна или отключена), время простоя в минутах и время входа. Отключённые сессии с многодневным простоем держат открытые базы 1С и память — их закрываю первыми. Для завершения чужой сессии нужно право Full Control, а сессию консоли командой logoff не закрыть. Microsoft прямо предупреждает, что logoff без предупреждения может привести к потере несохранённых данных, поэтому сначала отправляю сообщение через msg.
Чек-лист после оптимизации, который прохожу на каждом сервере:
- Задержка ввода (User Input Delay, экземпляр Max) в часы пик не растёт вместе с числом сессий.
- Нет отключённых сессий старше лимита из политики Session Time Limits.
- Контейнеры FSLogix не упираются в
SizeInMBs, на файловом сервере есть запас места. - Исключения антивируса на месте — проверяю
Get-MpPreference, а не по памяти.
Когда обратиться к профессионалам?
- Когда пользователи жалуются на тормоза и вы уже не знаете, куда смотреть
- Когда сервер загружен на 100% и непонятно почему
- Когда нужно рассчитать конфигурацию нового сервера под конкретное число пользователей
- Когда нужна миграция на FSLogix и хочется сделать это без простоев
- Когда 1С тормозит, вы перепробовали всё очевидное — и ничего не помогло
Часто задаваемые вопросы
Сколько пользователей выдержит сервер?
Офисные задачи: 30-50. Для 1С: 15-25. При оптимизации — на 30-50% больше.
HDD или SSD для RDS?
Только NVMe SSD. Разница в скорости 1С — в 5-10 раз.
Что такое FSLogix?
Решение Microsoft для профилей на RDS. Хранит профиль в VHD-файле. Ускоряет вход в 5-8 раз.
Как ускорить вход?
FSLogix, отключить автозагрузку, ограничить GPO, Easy Print вместо полного редиректа.
Нужен ли антивирус на RDS?
Да, но с правильными исключениями для 1С и временных файлов.
ООО «АйТи Фреш» возьмёт это на себя
Не хватает времени или своих специалистов — мы настроим, оптимизируем и возьмём вашу IT-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах. Собственный дата-центр, команда из 8 серверов Dell Xeon Platinum 8280 на базе МТС.


