Что было. Виртуальная машина с Windows Server 2022: 6 vCPU, 16 ГБ памяти. На ней одновременно контроллер домена, SQL Server (ограничен 4 ГБ) и узел сеансов RDS для 50 пользователей. Первые часы после старта работает, затем память под 97 %, всё замедляется до неприемлемого.
Ответ, который получил автор. Машина недостаточна для такой нагрузки в несколько раз. Ориентиры из ответа: не менее 1 ГБ памяти на сессию для базовой офисной работы (браузер с десятком вкладок съедает 1–2 ГБ сам), плюс ОС и службы, плюс приложения; для 50 пользователей минимум 64 ГБ, при тяжёлых приложениях 128 ГБ; процессор 8 ядер/16 потоков и выше. Арифметика автора: после ОС, домена и SQL на 50 сессий оставалось около 320 МБ на каждую.
Как посчитать для своего случая.
- Замерить, а не угадывать:
Get-Process -IncludeUserName | Group-Object UserName | ForEach-Object { [pscustomobject]@{User=$_.Name; MB=[int](($_.Group | Measure-Object WorkingSet64 -Sum).Sum/1MB)} } | Sort MB -Descendingна текущем сервере в рабочее время покажет реальную память на пользователя. - Память = (память ОС и служб ~3–4 ГБ) + (пользователей × средняя память сессии × 1,3 запаса).
- Процессор: 1 vCPU на 4–6 офисных пользователей; для браузерных приложений плотнее не получится.
- Диск: сотни одновременных мелких операций; SSD-класс обязателен, иначе вход занимает минуты.
Почему роли надо разносить. Контроллер домена и база данных на терминальном сервере это не только производительность:
- Пользователи терминального сервера получают интерактивный вход на контроллер домена, что нарушает базовую модель безопасности домена.
- SQL Server забирает память под кэш и конкурирует с сессиями; при нехватке проигрывают все.
- Перезагрузка терминального сервера ради обновления кладёт домен и базу.
Правильно: отдельная небольшая машина под домен, отдельная под базу, узлы сеансов масштабируются добавлением машин, а не памяти в одну.
Быстрые меры, пока ресурсов не добавили.
- Лимиты отключённых сессий (об этом отдельный разбор): отключённые сессии держат память.
- Отключить лишнее в сессиях: визуальные эффекты, фоновые приложения автозапуска, второй браузер.
- Исключения антивируса для каталогов профилей и баз, чтобы не сканировать одно и то же на 50 сессий.
- Не «лечить» файлом подкачки: подкачка на 50 сессий превращает медленную работу в стоящую.
Что смотреть в диспетчере задач. Вкладка «Пользователи» с колонками памяти и процессора; если несколько сессий держат по 3–4 ГБ, дело в приложении (утечка, тяжёлые вкладки), и добавить память мало: нужно ограничивать приложение.
Настройка производительности узлов сеансов описана в документации Microsoft.