Исправление: Службы удаленных рабочих столов в настоящее время заняты

В некоторых случаях пользователи не могут подключиться к хостам фермы RDS под управлением Windows Server с помощью встроенного клиента RDP (mstsc.exe) со следующей ошибкой:

The task you are trying to do can't be completed because Remote Desktop Services is currently busy. Please try again in a few minutes. Other users should still be able to log on.

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

В этом случае администратор хоста RDS может видеть множество застрявших пользовательских сессий с именем (4) вместо имен пользователей и Отключено статус на вкладке «Пользователи» в «Диспетчере задач».

RDS - отключенные сеансы с (4) вместо имени пользователяRDS - отключенные сеансы с (4) вместо имени пользователя

Проблема возникает во всех текущих версиях Windows Server: 2012 R2, 2016, 2019 и 2022.

Ошибка может возникать по нескольким причинам:

  • Ошибка в работе служб удаленных рабочих столов;
  • Ошибка в процессе csrss.exe;
  • Проблема с профилем пользователя или службой profsvc;
  • Нехватка оперативной памяти или места на жестком диске на хосте RDS;
  • Неправильные настройки групповой политики.

К сожалению, не существует официального решения Microsoft, которое могло бы полностью устранить проблему. Все, что вы можете сделать, — это избавиться от симптомов.

Устранение неполадок почти всегда включает сброс сеанса RD проблемного пользователя или перезапуск сервера RDS, но в некоторых случаях проблема сохраняется. Давайте рассмотрим возможные решения, начиная с самого простого

Проверка производительности хоста RDS и доступных ресурсов

Поскольку эта ошибка может возникать из-за нехватки оперативной памяти или свободного места на диске, убедитесь, что сервер располагает достаточными ресурсами. Проверьте, достаточно ли свободной оперативной памяти и места на жестком диске, где установлена операционная система (должно быть не менее 1 ГБ свободного места), очистите профили пользователей RDS от старых файлов и удалите старые (неиспользуемые) профили пользователей. Также проверьте журнал событий на наличие критических ошибок в работе служб Remote Desktop Services и User Profile Service (profsvc).

Если свободных ресурсов достаточно, перейдите к следующему варианту.

Сброс сеансов удаленного рабочего стола на RDS

Прежде всего, попробуйте найти и сбросить сессию пользователя, который не может войти на сервер RDS с ошибкой «Remote Desktop Service is currently busy«. Найдите пользователя на вкладке «Пользователи» в диспетчере задач и нажмите кнопку Выйти из системы в контекстном меню. В большинстве случаев это решит проблему, но иногда вы можете обнаружить в диспетчере задач несколько зависших сеансов с именем (4) вместо имени пользователя. Зависший сеанс пользователя RDS обычно имеет 4 запущенных процесса::

  • Client Server Runtime Process (csrss.exe)
  • Desktop Windows Manager (dwm.exe)
  • Приложение для входа в систему Windows (winlogon.exe)
  • Пользовательский интерфейс входа в Windows

Попробуйте сбросить все зависшие (4) сеансы RDS с помощью диспетчера задач, как описано выше. Если это не поможет, вам придется вручную завершить запущенные процессы в этих сеансах.

  1. Откройте командную строку и выполните команду: query session
    запрос сеанса на rdshсессия запросов на rdsh Команда выводит список всех пользователей и их сессий на хосте RDS. В выводе есть 3 столбца, которые нам нужны: SESSIONNAME, USERNAME и ID. Найдите(4) пользователя и соответствующий ID, в данном примере это ID 2. Вы должны убить csrss.exe процесс, запущенный в этом сеансе;
  2. Выполните команду: query process /id 2
    rds запрос процесса по идентификатору сеансапроцесс запроса rds по идентификатору сеанса Команда показывает все процессы, запущенные в сессии с указанным идентификатором. Нам нужно найти PID процесса csrss.exe. В моем случае PID 5140. Вам нужно убить этот процесс.
  3. Убейте процесс csrss.exe по его PID: taskkill /F /PID 5140

Когда процесс csrss.exe завершается, все остальные процессы в сеансе пользователя автоматически завершаются. Это позволяет завершать сеансы зависших пользователей RDS без перезапуска сервера.

Сделайте это для каждого (4) пользователя, если их несколько.

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

Также, если вы работаете на ненадежных соединениях, мы рекомендуем установить параметр GPO Настройка интервала соединения keep-alive на 1 минута (Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Хост сеансов удаленных рабочих столов -> Соединения).включение интервала сохранения соединения rdsвключить интервал сохранения соединения rds

Убийство сеанса пользователя удаленного рабочего стола с помощью командной строки

Если вам не удалось выйти из системы, вы можете попробовать сбросить сеанс пользователя RDS из командной строки:

  1. Откройте командную строку от имени администратора и выполните команду: query session
  2. Завершите сеанс пользователя, используя его SESSIONNAME или ID. Например:
    reset session rdp-tcp#16
    или:
    reset session 3
    rdsh сброс сессииrdsh сброс сеанса

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

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

qwinsta /server:mun-rds01

Затем можно удаленно завершить зависшую сессию:

reset session rdp-tcp#16 /server:mun-rds01

Проверка параметров лицензирования на хосте RDS

Убедитесь, что сервер лицензий и тип лицензии (CAL Per User/ CAL Per Device), настроенные на хосте RDSH, верны.

Я получил ошибку ‘Задача, которую вы пытаетесь выполнить, не может быть выполнена, поскольку службы удаленных рабочих столов в настоящее время заняты‘ тогда я забыл указать адрес сервера, на котором запущена роль Remote Desktop Licensing после установки роли RDSH. В этом случае два пользователя RDP подключились как обычно, а третий столкнулся с этой ошибкой.

Адрес сервера с лицензиями RDS может быть указан:

  • В настройках коллекции RDS: Tasks -> Edit Deployment Properties -> RD Licensing -> Укажите сервер лицензий;RDS - настройка сервера лицензирования RD и режима CALRDS - настройка сервера лицензирования RD и режима CAL
  • С помощью параметра групповой политики Использовать указанные серверы лицензий Remote Desktop (Конфигурация компьютера -> Политики -> Шаблоны администратора -> Компоненты Windows -> Службы удаленных рабочих столов -> Хост сеанса удаленного рабочего стола -> Лицензирование) GPO Использовать указанные серверы лицензий Remote Desktop GPO Использовать указанные серверы лицензий Remote Desktop
  • Использование PowerShell (см. статью Режим лицензирования для узла сеанса удаленного рабочего стола не настроен).

Отключение ограничения максимального количества подключений RDP в GPO

Вы можете использовать групповые политики для ограничения количества одновременных (параллельных) RDS-соединений. По умолчанию эта политика не настроена. Это означает, что максимальное количество подключений не ограничивается хостом RDSH.

Используйте gpresult, чтобы проверить, включена ли политика и какое значение она имеет.

  1. Выполните следующую команду в поднятой командной строке: gpresult /H c:\gpresult.html
  2. Откройте файл gpresult.html, расположенный в корне диска C. Это обычный .html-файл, который можно открыть с помощью браузера (Internet Explorer по умолчанию отключен в современных сборках Windows, и вы должны использовать MS Edge);
  3. Найдите параметр GPO с именем Ограничение количества подключений [Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Хост сеанса удаленного рабочего стола\Connections или введите Ограничение количества соединений для поиска на странице.

Если такой политики нет, то она не применяется и ограничений на количество одновременных подключений нет. Если политика есть и указано количество одновременных подключений, измените ее значение на нужное вам. Вы можете настроить параметр GPO с помощью локального редактора групповой политики (gpedit.msc), а если политика задана через GPO домена, отредактируйте ее с помощью редактора GPO домена (gpmc.msc). После этого не забудьте запустить программу gpupdate /force, чтобы немедленно применить новые параметры групповой политики.

Другие способы устранения проблем с занятой службой RDP

Если на хосте достаточно свободных ресурсов, в журналах RDP нет ошибок, сброс сессии пользователя по каким-то причинам не помог, а перезапустить сервер RDSH сразу не удается, попробуйте следующие варианты:

  • Убедитесь, что хост RDS не находится в режиме Drain, который не позволяет пользователям создавать новые RDP-соединения: chglogon.exe /QUERY. Если команда выдает результат ‘Вход новых пользователей ЗАПРЕЩЕН, но повторные подключения к существующим сессиям ЗАПРЕЩЕНЫ’, отключите режим Drain: chglogon.exe /enable chglogon.exe отключить режим сливаchglogon.exe отключить режим слива
  • Снимите галочку с пункта Постоянное кэширование растровых изображений опция в настройках RDP-соединения в mstsc.exe клиента. Попробуйте использовать модем 56 кбит/с для оптимизации производительности; клиент mstsc rdp: отключение кэширования растровых изображенийmstsc rdp client: disable bitmap caching
  • Перезапустите службу удаленных рабочих столов с помощью команд: net stop termservice и net start termservice. Или перезапустите службу удаленно с помощью PowerShell: Get-Service termservice –ComputerName mun-rdsh1 | Restart-Service
  • Убить все tstheme.exe процессы;
  • Рекомендуется установить все последние обновления для вашей версии Windows. Используйте стандартные средства Windows Update или модуль PSWindowsUpdate PowerShell.
  • На Windows Server 2012 R2 в Event Viewer может появиться событие ID 20499 «Службы удаленных рабочих столов слишком долго загружают конфигурацию пользователя с сервера…«. Чтобы решить эту проблему, добавьте параметр fQueryUserConfigFromLocalMachine . запись реестра:
    REG ADD "HKLM\SYSTEM\CurrentControlSet\control\Terminal Server\Winstations\RDP-Tcp" /v fQueryUserConfigFromLocalMachine /t REG_DWORD /d 1 /f
    REG ADD "HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services" /v fQueryUserConfigFromLocalMachine /t REG_DWORD /d 1 /f
  • Если Citrix установлен на вашем хосте Windows и на нем имеется большое количество отключенных сеансов на сервере VDA, вы можете решить проблему, создав параметр SeTokenDoesNotTrackSessionObject запись реестра:
    REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel" /v SeTokenDoesNotTrackSessionObject /t REG_DWORD /d 1 /f
  • Проверьте службу профиля пользователя (profsvc) журналы. Если вы используете User Profile Disk (UPD) или профили FSLogix на Windows Server, убедитесь, что файловый сервер, содержащий файлы профилей, доступен и не испытывает проблем с производительностью. Кроме того, при использовании UPD на Windows Server 2019/2016 создайте файл DeleteUserAppContainersOnLogoff параметр реестра, который устранит проблемы со многими правилами брандмауэра Windows Defender, которые создаются для приложений UWP Windows Store при каждом входе пользователя в систему.
    Это описано в статье Низкая производительность RDS на Windows Server 2016/2019 с дисками пользовательского профиля.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *