1000+ инструкций в блоге SoftComputers
0 0 голоса
Рейтинг

Когда пользователь закрывает окно RDP/RDS сессии (например, через клиент mstsc.exe, RDCMan или веб-клиент RDP HTML) без выполнения выхода (logoff), просто нажав на крестик, его сессия переходит в состояние disconnected (отключенный сеанс). В этом режиме все запущенные приложения, открытые документы и окна продолжают работать на сервере, потребляя ресурсы, такие как оперативная память и процессорное время. Это может привести к значительной нагрузке на сервер и другим проблемам, включая блокировку файлов или учетных записей.

Приобрести оригинальные ключи активации Windows Server можно у нас в каталоге от 1190 ₽

Почему отключенные сессии создают проблемы

Отключенные RDP/RDS сессии на сервере Windows Server, например, версии 2019 или 2022, могут оставаться активными до перезагрузки сервера или ручного завершения администратором. Это удобно для пользователей, так как они могут вернуться к своей сессии и продолжить работу с сохраненными данными. Однако такие сессии:

– Потребляют ресурсы сервера (например, около 35% оперативной памяти для отключенных сессий на сервере с Windows Server 2019).

– Блокируют файлы на файловых серверах, что может мешать другим пользователям.

– Вызывают проблемы с сохранением данных в приложениях или профилях, включая User Profile Disks.

– Могут приводить к блокировке учетной записи в домене после смены пароля, если старая сессия продолжает использовать устаревшие учетные данные.

Как проверить состояние RDP сессий

Для анализа текущих сессий используйте команду quser, которая показывает время начала сессии, длительность простоя и статус (активная или отключенная).

quser

Для более детальной информации о сессиях в RDS ферме используйте следующий PowerShell-скрипт, заменив FQDN на адрес вашего RDS Connection Broker:


$connectionBroker = "MSK-RDSMAN.WINITPRO.RU"
Get-RDUserSession -ConnectionBroker $connectionBroker | Select-Object -Property CollectionName, HostServer, DomainName, UserName, ServerIPAddress, CreateTime, DisconnectTime, SessionState, IdleTime, SessionID, `
@{Name='SessionAge ([days.]hours:minutes)';Expression={ ((Get-Date) - $_.CreateTime) }}

Этот скрипт выводит данные о коллекции, сервере, имени пользователя, времени создания сессии, времени отключения и длительности простоя.

Настройка автоматического завершения RDP сессий

Чтобы минимизировать влияние отключенных и простаивающих сессий, настройте лимиты времени для RDP/RDS сессий. Это позволит автоматически завершать неактивные сессии, освобождая ресурсы сервера.

Настройка таймаутов в RDS коллекции

Если у вас развернута ферма Remote Desktop Services, настройте таймауты в параметрах коллекции:

1. Откройте Диспетчер сервера (Server Manager) → Службы удаленных рабочих столов (Remote Desktop Services) → выберите коллекцию → вкладка Сеансы (Session).

2. Установите значение для параметра Окончание разъединенного сеанса (End a disconnected session). По умолчанию стоит Никогда (Never).

3. Настройте Ограничение активного сеанса (Active session limit) и Ограничение бездействующего сеанса (Idle session limit) для завершения бездействующих сессий.

Эти настройки применяются ко всем сессиям в коллекции и являются жесткими лимитами.

Настройка таймаутов через групповые политики

Для более гибкой настройки используйте групповые политики (GPO) в Windows Server 2012 R2, 2016, 2019 или 2022. Параметры доступны как в редакторе доменных политик (gpmc.msc), так и в локальных политиках (gpedit.msc) на сервере или десктопной версии Windows с разрешенными множественными RDP-подключениями.

Перейдите в раздел:
Конфигурация компьютера → Политики → Административные шаблоны → Компоненты Windows → Службы удаленных рабочих столов → Узел сеансов удаленных рабочих столов → Ограничение сеансов по времени
(Computer Configuration → Policies → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Session Time Limits).

Доступные политики:

Задать ограничение по времени для отключенных сеансов (Set time limit for disconnected session) — задает время, через которое завершается отключенная сессия.

Задать ограничение времени для активных, но бездействующих сеансов (Set time limit for active but idle Remote Desktop Services sessions) — завершает сессии без активности (движение мыши, ввод с клавиатуры).

Задать ограничение по времени для активных сеансов (Set time limit for active Remote Desktop Services sessions) — переводит активные сессии в disconnected после заданного времени.

Завершать сеанс при достижении ограничения по времени (End Session when time limits are reached) — завершает сессию вместо перевода в disconnected.

Задать предел для выхода из сеансов RemoteApp (Set time limit for logoff of RemoteApp sessions) — задает лимит для завершения RemoteApp-сессий.

Чтобы завершить отключенные сессии через 8 часов:

1. Включите политику Задать ограничение по времени для отключенных сеансов (Set time limit for disconnected session) = Включено (Enabled).

2. Выберите 8 часов в выпадающем меню.

После настройки выполните команду для обновления политик:

gpupdate /force

Новые настройки применяются только к новым сессиям. Текущие сессии нужно завершить вручную. Политики GPO имеют приоритет над настройками коллекции RDS.

Настройка через реестр

Альтернативно, настройте таймауты через реестр в ветке:

HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services.

Соответствующие параметры (тип DWORD):

MaxDisconnectionTime — время для отключенных сессий.

MaxIdleTime — время простоя.

MaxConnectionTime — максимальная длительность активной сессии.

RemoteAppLogoffTimeLimit — время для RemoteApp-сессий.

Пример: установка лимита в 15 минут (900000 мс) для отключенных сессий через PowerShell:


Set-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" -Name MaxDisconnectionTime -Type 'DWord' -Value 900000

Настройка в свойствах пользователя

Лимиты можно задать для конкретного пользователя через консоль lusrmgr.msc (локальные пользователи) или dsa.msc (Active Directory):

1. Откройте свойства пользователя → вкладка Сеансы (Sessions).

2. Настройте:

Окончание разъединенного сеанса (End a disconnected session).

Ограничение активного сеанса (Active session limit).

Ограничение бездействующего сеанса (Idle session limit).

При достижении лимита или разрыве соединения: выбрать Отключить сеанс (Disconnect from session) или Завершить сеанс (End Session).

Разрешить повторное подключение: С любого клиента (From any client) или Только с исходного клиента (From originating client only).

Настройка таймаутов через RD Gateway

Для пользователей, подключающихся через RD Gateway, настройте таймауты в политике авторизации подключений:

1. Откройте Диспетчер RD Gateway (RD Gateway Manager).

2. Перейдите в Политики авторизации подключений (Connection Authorization Policies) → вкладка Таймауты (Timeouts).

3. Установите лимиты для отключенных и простаивающих сессий.

Устаревший метод: консоль tsconfig.msc

В Windows Server 2008 R2 для настройки лимитов использовалась консоль tsconfig.msc (Конфигурация узла сеансов удаленного рабочего стола / RD Session Host Configuration).

1. Запустите tsconfig.msc.

2. Щелкните правой кнопкой мыши по RDP-TcpСвойства (Properties) → вкладка Сеансы (Sessions).

3. Установите лимиты времени.

В новых версиях Windows Server (2012 R2 и выше) эта консоль отсутствует, но файлы tsadmin.msc и tsconfig.msc можно скопировать с Windows Server 2008 R2 для использования.

Уведомления о завершении сессий

После настройки таймаутов пользователи будут получать уведомления перед завершением сессии, например:

Истек таймер простоя. Сеанс был бездействующим сверх установленного лимита. Он будет отключен через 2 минуты. Нажмите любую клавишу, чтобы продолжить.
(Idle timer expired. Session has been idle over its time limit. It will be disconnected in 2 minutes. Press any key to continue the session.)

В логах сервера появится событие с Event ID 26.

Чтобы отключить предупреждения, используйте команду для изменения класса WMI:


Set-WmiInstance -Path "\\localhost\root\CIMV2\TerminalServices:Win32_TSSessionSetting.TerminalName='RDP-Tcp'" -Argument @{EnableTimeoutWarning=0}

После завершения сессии пользователь увидит сообщение:
Ваш сеанс служб удаленных рабочих столов завершен, так как удаленный компьютер не получил от вас никаких данных.
(Your Remote Desktop Services session ended because the remote computer didn’t receive any input from you.)

Ошибки при завершении сессий

Возможна ошибка:

Ваш сеанс служб удаленных рабочих столов завершен. Другой пользователь подключился к удаленному компьютеру, и ваше соединение было потеряно.
(Your Remote Desktop Services session has ended. Another user connected to the remote computer, so your connection was lost.)

Это происходит, если:

– Количество одновременных RDP сессий ограничено (например, в десктопных версиях Windows доступен только один сеанс).

– Пользователь повторно подключается с другого устройства.

Для разрешения множественных подключений под одним пользователем:

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

(Computer Configuration → Policies → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Connections).

2. Установите политику Ограничить пользователей службы удаленных рабочих столов одним сеансом служб удаленных рабочих столов (Restrict Remote Desktop Services users to a single Remote Desktop Services session) = Отключено (Disabled).

Рекомендации по настройке

– Не устанавливайте слишком короткие таймауты, чтобы избежать прерывания работы пользователей при кратковременной неактивности.

– Используйте групповые политики для централизованного управления в домене.

– Регулярно проверяйте состояние сессий с помощью quser или PowerShell-скриптов для контроля ресурсов.

– Для RD Gateway настройте отдельные таймауты, если пользователи подключаются через шлюз.

Эти настройки помогут оптимизировать использование ресурсов сервера, минимизировать проблемы с блокировкой файлов и учетных записей, а также повысить производительность RDS/RDP инфраструктуры.

author avatar
copywriter
banner for Windows Server
Лицензионный ключ активации Windows Server от
1190 ₽ Купить
0 0 голоса
Рейтинг
Подписаться
Уведомить о
guest
     
0 отзывов
199
Межтекстовые Отзывы
Посмотреть все комментарии