Оптимизация терминального сервера Windows: плотность и отклик под 1С и Office
Семёнов Евгений, директор АйТи Фреш. Первый свой RDS-сервер я настроил на Windows Server 2003 в 2010 году — десять пользователей с 1С 7.7 на сервере с 4 ГБ оперативной. Сегодня стандартный запрос — «заведите 50 юзеров в 1С:ЗУП и Office на один сервер». За 15+ лет я накопил набор настроек и скриптов, с которыми терминальник реально держит плотность в 1.5 раза выше дефолта без потери отзывчивости. Делюсь.
С чего начинается оптимизация
С измерений. Я никогда не крутил настройки вслепую. Набор метрик, которые снимаю до и после оптимизации:
\Processor(_Total)\% Processor Time— загрузка CPU.\Memory\Available MBytes— свободная RAM.\PhysicalDisk(_Total)\Avg. Disk Queue Length— очередь к диску.\Terminal Services\Active SessionsиInactive Sessions.- Время логина (Event 6339 GroupPolicy/Operational).
- Субъективная отзывчивость у пользователей — ставим цель 2 секунды на открытие документа Word.
VDI Optimization Tool от Microsoft
Первый инструмент — официальный скрипт Microsoft Windows Virtual Desktop Optimization Tool (работает и на обычном RDS). Он отключает телеметрию, Store-приложения, лишние сервисы, визуальные эффекты.
# Скачиваем с GitHub microsoft/Virtual-Desktop-Optimization-Tool
git clone https://github.com/The-Virtual-Desktop-Team/Virtual-Desktop-Optimization-Tool.git
# Запускаем
cd Virtual-Desktop-Optimization-Tool
.\Windows_VDOT.ps1 -Optimizations All -AcceptEULA -Verbose
После выполнения — обязательный ребут. На свежеустановленном Server 2022 у меня высвобождается 250–400 МБ RAM и 3–5% CPU idle нагрузки.
Отключение ненужных сервисов
| Служба | Состояние | Комментарий |
|---|---|---|
| SysMain (Superfetch) | Disabled | Бесполезна на многопользовательских серверах |
| WSearch | Manual/Disabled | Только если пользователи не ищут по OST |
| Themes | Automatic | Оставляем — Office зависит |
| Print Spooler | Auto или Disabled | Disabled если печать через отдельный Print Server |
| Xbox services | Disabled | Не нужны |
| Connected User Experiences and Telemetry | Disabled | GPO Telemetry=0 |
| Windows Update (в рабочие часы) | Trigger start | Через GPO окна |
GPO для терминального сервера
Я всегда собираю отдельную GPO «RDS-Server-Optimization» с таким набором:
- Computer → Admin Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Device and Resource Redirection → Do not allow drive redirection = Enabled (обычно), Clipboard — Enabled (нужно).
- Connections → Limit number of connections — по числу оплаченных RDS CAL.
- Session Time Limits: Idle 30 минут, Active 10 часов, Disconnected 2 часа.
- Remote Session Environment → Configure compression = Optimize to use less memory.
- User → Admin Templates → Control Panel → Personalization — запрет смены обоев, заставок, тем.
- User → Admin Templates → Windows Components → File Explorer — запрет доступа к диску C: прямыми буквами.
FSLogix для профилей
Без FSLogix терминальник живёт плохо. Roaming profile копирует профиль при входе/выходе, это занимает минуты; локальные профили — привязаны к одному серверу фермы. FSLogix монтирует VHDX с профилем как виртуальный диск: скорость — как локальная, а мигрирует между Session Host прозрачно.
# Установка
msiexec /i FSLogixAppsSetup.exe /quiet /norestart
# Реестровые ключи (обычно через GPO из ADMX-шаблона)
New-Item -Path "HKLM:\SOFTWARE\FSLogix\Profiles" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\FSLogix\Profiles" -Name "Enabled" -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\FSLogix\Profiles" -Name "VHDLocations" -Value "\\fs01\fslogix\profiles"
Set-ItemProperty -Path "HKLM:\SOFTWARE\FSLogix\Profiles" -Name "SizeInMBs" -Value 30720
Set-ItemProperty -Path "HKLM:\SOFTWARE\FSLogix\Profiles" -Name "VolumeType" -Value "VHDX"
Set-ItemProperty -Path "HKLM:\SOFTWARE\FSLogix\Profiles" -Name "FlipFlopProfileDirectoryName" -Value 1
Обязательное требование к шаре FSLogix — 200+ IOPS на активного пользователя. На S2D или быстром NAS держит 60+ юзеров спокойно.
Fair Share Scheduling
По умолчанию Windows Server делит CPU, диск и память между сессиями более-менее справедливо. Но «более-менее» — не всегда достаточно. Проверяем и при необходимости включаем:
# CPU fair share
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System" `
-Name "EnableCpuQuota" -Value 1 -PropertyType DWord -Force
# Disk fair share
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\TSFairShare\Disk" `
-Name "EnableFairShare" -Value 1 -PropertyType DWord -Force
# Memory
Set-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" `
-Name "EnableDynamicMemory" -Value 1
Page file и своп
Системный своп на RDS — критичная вещь. Я всегда ставлю его фиксированного размера 1.5× RAM на отдельный VHDX или быстрый диск. Динамический swap на HDD = убитая отзывчивость у всей фермы. Для сервера с 64 ГБ RAM ставлю 96 ГБ pagefile.sys на SSD.
Мини-кейс: плотность с 28 до 46 пользователей
Сентябрь 2025. Клиент — бухгалтерская компания, RDS на Windows Server 2019, 16 vCPU, 64 ГБ RAM, SSD. Реальная плотность — 28 пользователей в 1С:ЗУП, с 30-й начинались тормоза. Бюджет на второй сервер клиент отказался выделять, попросил «попробовать оптимизацию».
За один рабочий день я прошёлся по плану:
- VDI Optimization Tool — 3,5% CPU и 500 МБ RAM сэкономил.
- Отключил Superfetch, WSearch, телеметрию, Xbox-сервисы.
- Перевёл профили с roaming на FSLogix на существующую шару.
- Настроил Fair Share для CPU и диска.
- Увеличил pagefile до 96 ГБ на NVMe.
- GPO с запретом анимаций, теней, высокого DPI-масштабирования.
После ребута плотность поднялась до стабильных 46 пользователей без тормозов. Серверное железо — Dell PowerEdge R750 в дата-центре МТС, Xeon Platinum 8280, 40G Mellanox до файл-шары. Счёт — 38 000 руб., экономия на втором сервере — 280 000 руб./год лицензий и железа.
Отключение визуальных излишеств
# Ultimate performance plan
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61
powercfg /setactive e9a42b02-d5df-448d-aa00-03f14749eb61
# Visual effects = best performance
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" `
-Name "VisualFXSetting" -Value 2
# Отключить прозрачности
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" `
-Name "EnableTransparency" -Value 0
Мониторинг нагрузки
Оптимизация — не единоразовое действие. Я всегда ставлю Zabbix или PRTG на терминальник и смотрю графики еженедельно. Ключевые триггеры:
- CPU > 85% дольше 10 минут подряд.
- Disk Queue Length > 2 стабильно.
- Количество активных сессий > 90% от расчётного.
- Средний время логина > 60 секунд.
Чек-лист перед запуском терминалки в бой
- VDI Optimization Tool применён.
- FSLogix настроен и протестирован.
- GPO User Experience собрана и привязана.
- Fair Share включен.
- Pagefile правильного размера на быстром диске.
- Антивирус с исключениями на FSLogix-папки, 1С-базы.
- Мониторинг и алерты.
- Проведён нагрузочный тест (Login VSI или скриптовой с 50 сессиями).
Оптимизируем ваш терминальный сервер
Проведу полный аудит RDS, применю VDI-оптимизации, переведу профили на FSLogix, настрою мониторинг. Поднимаю плотность в 1.3–1.7 раза без потери отзыва. Срок — 1–2 дня на один сервер. Опыт 15+ лет с RDS, от Server 2003 до Server 2025.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы
- Сколько пользователей выдержит терминальный сервер?
- 30–60 офисных на 8 vCPU/32 ГБ; 20–30 для 1С толстого клиента.
- Что даёт VDI Optimization Tool?
- Отключает лишние сервисы, телеметрию, эффекты — до 30% CPU и 15% RAM.
- Нужен ли FSLogix?
- Практически всегда да, roaming медленный, локальные — непереносимые.
- Как ограничить ресурсы пользователя?
- Fair Share Scheduling, NTFS-квоты, FSLogix size limits.
- Что отключить в Windows Server?
- Superfetch, WSearch, Xbox-сервисы, телеметрию, автообновления в рабочие часы.