- Службы удаленных рабочих столов сейчас заняты windows
- Причины ошибки с занятыми службами RDP
- Основные причины такого поведения
- Методы решения ошибки входа по RDP
- При подключении пользователь получает сообщение «Служба удаленных рабочих столов сейчас занята» On connecting, user receives «Remote Desktop Service is currently busy» message
- Проблемы с памятью на сервере RDSH RDSH server memory issue
- Проблема с прослушивателем удаленных рабочих столов RD listener issue
- Проверка политики ограничения числа подключений Check the connection limit policy
- Ошибка RDP: Не удается завершить требуемую операцию, службы удаленных рабочих столов заняты
- #1 — Проверьте ресурсы RDS сервера
- #2 – Сброс сессии пользователя и завершение зависших процессов в RDS сессии
- #3 — Сброс сессии пользователя через командную строку
- #4 – Проверьте настройки лицензирования хоста RDS
- #5 – Уберите лимит RDP подключений в GPO
- #6 — Нестандартные решения: если ничего не помогает
Службы удаленных рабочих столов сейчас заняты windows
Добрый день! Уважаемые читатели и гости, IT блога Pyatilistnik.org. Я очень часто пишу про всевозможные приколы, косяки и ошибки терминальных служб и просто служб удаленного рабочего стола. В прошлый раз, я вам рассказывал, что делать в ситуациях, когда невозможно загрузить профиль пользователя, так сказать временные профили. Тогда хоть удавалось попадать на сервер, сейчас даже и этого не получается, выскакивает ошибка, что «Задача, которую вы пытаетесь выполнить, не может быть завершена, потому что в настоящее время заняты службы удаленного рабочего стола«. Давайте смотреть как решается данная проблема и с чем она связана.
Причины ошибки с занятыми службами RDP
Описываю ситуацию, есть арендованный, виртуальный сервер в vCloud Director. На нем настроен сервер терминалов на и подключены терминальные лицензии. Пользователь пытается подключить к нему, с помощью стандартного средства, окна RDP, но у него выскакивает сообщение об ошибке:
Или русский вариант: Задача, которую вы пытаетесь выполнить, не может быть завершена, потому что в настоящее время заняты службы удаленного рабочего стола. Попробуйте повторить попытку, через несколько минут. Остальные пользователи, по прежнему смогут логиниться на сервер
Как видите пользователя отфутболивает и он не может попасть на сервер.
Основные причины такого поведения
- Первый вариант, это заглючила служба удаленных рабочих столов
- Проблема с профилем пользователя. Эта проблема возникает из-за проблемы синхронизации в службе профиля пользователя (profsvc) между рабочим потоком и основной служебной программой. Когда служба профиля пользователя останавливается, служба может быть занята, пытаясь очистить профили.
- Проблема с процессом csrss.exe. Эта проблема возникает из-за ситуации взаимоблокировки, которая возникает между процессом Csrss.exe и некоторыми приложениями (например, Microsoft Excel или Microsoft Visio).
- Системе может не хватать ресурсов на подключение, их может выедать, все та же IIS, которую нужно ограничивать.
- Проверьте наличие свободного места на диске C:\, видел и такое.
Давайте разбираться, что нужно делать в такой ситуации.
Методы решения ошибки входа по RDP
И так, если вы все же словили ошибку «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», то не спешите расстраивается, она сто процентов решается, все только измеряется конечным результатом. В моем случае, виртуальная машина использовалась для разработки, поэтому ее использовали несколько человек.
- Если у вас есть физический, консольный или удаленный доступ к серверу, то зайдите на него и попробуйте разлогинить, того пользователя, кто испытывает трудности при входе. Для этого вы заходите в диспетчер задач, переходите на вкладку пользователи, где находите нужного вам. Выбираете его, щелкаете правым кликом и делаете «Выход из системы (Log off)». В большинстве случаев, этого достаточно, но не в моем. В диспетчере задач, я обнаружил странного пользователя с именем (4) или (5). У данного пользователя с ником (4) или (5), было открыто 4 процесса:
- Client Server Runtime Process
- Desktop Windows Manager
- Windows Logon Application
- Windows Logon User Interface
Мои попытки разлогинить его из диспетчера зада, оказались бесполезными. Я такое встречал уже, и видел когда было много таких пользователей (4), все решалось перезагрузкой сервера, лечилось на 100%, но в моем случае так как сервер использовался многими сотрудниками, то его трогать было нельзя, ищем другие варианты.
- Если перезагрузить ваш сервер не представляется возможным, то попробуйте выполнить вот такие действия. Я буду показывать их на Windows Server 2016, но они применимы и для других версии ОС Windows. Откройте командную строку cmd от имени администратора. Введите вот такую команду:
Она покажет всех залогиненных пользователей в терминальном сервере, обратите внимание, что тут так же есть пользователь (4), нас в данной выдаче интересует поле ID, это идентификатор пользователя. Он нам потребуется, чтобы грохнуть процесс csrss.exe, для конкретного пользователя. В моем случае ID 48.
Далее в командной строке, выполните команду:
у вас будут выведены, все процессы, которые запущены из под данного пользователя, нас будет интересовать csrss.exe и его PID.
Далее нужно свериться по диспетчеру задач, с этим PID, для этого на вкладке процессы, щелкните правым кликом по любому из столбцов и добавьте колонку PID.
В появившейся колонке PID,найдите нужный нам, в моем случае, это PID 26980, он соответствует процессу csrss.exe, пробуем его отключить, в диспетчере задач. По идее, это должно помочь устранить ошибку подключения «Задача, которую вы пытаетесь выполнить, не может быть завершена, потому что в настоящее время заняты службы удаленного рабочего стола. Попробуйте повторить попытку, через несколько минут. Остальные пользователи, по прежнему смогут логиниться на сервер».
- Убить все процессы можно и через taskkill или rwinsta
- Если, этот метод вам не помог, то в некоторых случаях, с виртуальными машинами помогает вариант отключения и включения доступа по RDP
При подключении пользователь получает сообщение «Служба удаленных рабочих столов сейчас занята» On connecting, user receives «Remote Desktop Service is currently busy» message
Чтобы определить соответствующее решение этой проблемы, выполните следующие действия: To determine an appropriate response to this issue, see the following:
- Прекращает ли служба удаленных рабочих столов отвечать на запросы (например, клиент удаленного рабочего стола зависает на экране приветствия)? Does the Remote Desktop Services service becomes unresponsive (for example, the remote desktop client appears to «hang» at the Welcome screen).
- Если служба перестает отвечать, см. раздел Проблемы с памятью на сервере RDSH. If the service becomes unresponsive, see RDSH server memory issue.
- Если клиент взаимодействует со службой без проблем, перейдите к следующему шагу. If the client appears to be interacting with the service normally, continue to the next step.
- Могут ли пользователи отключиться от сеансов удаленного рабочего стола и снова подключиться к ним? If one or more users disconnect their remote desktop sessions, can users connect again?
- Если служба по-прежнему отклоняет подключения независимо от того, сколько пользователей отключили сеансы, см. раздел Проблема с прослушивателем удаленных рабочих столов. If the service continues to deny connections no matter how many users disconnect their sessions, see RD listener issue.
- Если служба принимает подключения только после того, как несколько пользователей отключили сеансы, проверьте политику ограничения числа подключений. If the service begins accepting connections again after a number of users have disconnected their sessions, check the connection limit policy.
Проблемы с памятью на сервере RDSH RDSH server memory issue
На некоторых серверах RDSH с Windows Server 2012 R2 обнаружена утечка памяти. A memory leak has been found on some Windows Server 2012 R2 RDSH servers. Со временем эти серверы начинают отклонять подключения к удаленному рабочему столу и входы в локальную консоль с отображением таких сообщений: Over time, these servers begin to refuse both remote desktop connections and local console sign-ins with messages like the following:
Не удается завершить требуемую операцию, так как службы удаленных рабочих столов сейчас заняты. The task you are trying to do can’t be completed because Remote Desktop Service is currently busy. Повторите попытку через несколько минут. Please try again in a few minutes. Другие пользователи должны по-прежнему иметь возможность входа. Other users should still be able to sign in.
При попытке подключения клиенты удаленного рабочего стола также перестают отвечать на запросы. Remote Desktop clients attempting to connect also become unresponsive.
Чтобы устранить эту проблему, перезапустите сервер RDSH. To work around this issue, restart the RDSH server.
Чтобы устранить эту проблему, установите обновление KB 4093114 (10 апреля 2018 г. — KB4093114 (ежемесячный накопительный пакет)) на серверах RDSH. To resolve this issue, apply KB 4093114, April 10, 2018—KB4093114 (Monthly Rollup), to the RDSH servers.
Проблема с прослушивателем удаленных рабочих столов RD listener issue
Проблема обнаружена на тех же серверах RDSH, которые были обновлены с Windows Server 2008 R2 непосредственно до Windows Server 2012 R2 или Windows Server 2016. An issue has been noted on some RDSH servers that have been upgraded directly from Windows Server 2008 R2 to Windows Server 2012 R2 or Windows Server 2016. Когда клиент удаленного рабочего стола подключается к серверу RDSH, этот сервер создает прослушиватель удаленных рабочих столов для сеанса пользователя. When a Remote Desktop client connects to the RDSH server, the RDSH server creates an RD listener for the user session. На затронутых серверах ведется подсчет числа прослушивателей к удаленному рабочему столу, которое увеличивается по мере подключения пользователей, но никогда не уменьшается. The affected servers keep a count of the RD listeners that increases as users connect, but never decreases.
Вы можете решить эту проблему с помощью следующих методов: You can work around this issue with the following methods:
- Перезапустите сервер RDSH, чтобы сбросить счетчик прослушивателей удаленного рабочего стола. Restart the RDSH server to reset the count of RD listeners
- Измените политику ограничения числа подключений, задав очень большое значение. Modify the connection limit policy, setting it to a very large value. Дополнительные сведения об управлении политикой ограничения числа подключения см. в разделе Проверка политики ограничения числа подключений. For more information about managing the connection limit policy, see Check the connection limit policy.
Чтобы устранить эту проблему, установите следующие обновления на серверы RDSH: To resolve this issue, apply the following updates to the RDSH servers:
Проверка политики ограничения числа подключений Check the connection limit policy
Вы можете задать ограничение на число одновременных подключений к удаленному рабочему столу на уровне отдельного компьютера или путем настройки объекта групповой политики. You can set the limit on the number of simultaneous remote desktop connections at the individual computer level or by configuring a group policy object (GPO). По умолчанию ограничение не задано. By default, the limit is not set.
Чтобы проверить текущие параметры и определить существующие объекты групповой политики на сервере RDSH, откройте окно командной строки как администратор и введите следующую команду: To check the current settings and identify any existing GPOs on the RDSH server, open a command prompt window as an administrator and enter the following command:
Когда команда будет выполнена, откройте файл gpresult.html. After this command finishes, open gpresult.html. Выберите Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Подключения и найдите политику Ограничить количество подключений. In Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections, find the Limit number of connections policy.
- Если для параметра этой политики задано значение Отключено, групповая политика не ограничивает подключения по протоколу RDP. If the setting for this policy is Disabled, then group policy is not limiting RDP connections.
- Если же для параметра этой политики задано значение Включено, проверьте результирующий объект групповой политики. If the setting for this policy is Enabled, then check Winning GPO. Если нужно удалить или изменить ограничение числа подключений, измените этот объект групповой политики. If you need to remove or change the connection limit, edit this GPO.
Чтобы применить изменения политики, откройте окно командной строки на соответствующем компьютере и введите следующую команду: To enforce policy changes, open a command prompt window on the affected computer, and enter the following command:
Ошибка RDP: Не удается завершить требуемую операцию, службы удаленных рабочих столов заняты
Периодически некоторые пользователи не могут залогиниться на сервера RDS фермы Windows Server через стандартный rdp клиент с ошибкой:
Также несколько раз встречали такую картину: на вкладке Users диспетчера задач RDS хоста имеется множество зависших сессией пользователей с именами (4) вместо username и со статусом Disconnected.
Проблема встречается на всех версиях Windows Server: 2008 R2, 2012 R2, 2016 и 2019.
Ошибка может возникать по разным причинам:
- Ошибка в работе службы удаленных рабочих столов;
- Баг с процессом csrss.exe;
- Проблема с профилем пользователя или со службой profsvc;
- Нехватка оперативной памяти или дискового пространства на RDSH сервере;
- Некорректные настройки групповых политик.
К сожалению, на данный момент нет официального решения от Microsoft, которое бы полностью решало проблему, всё сводится к устранению симптомов.
Практически всегда проблема решается сбросом сессии проблемного пользователя и перезагрузкой RDS сервера, но в исключительных ситуациях этого может не хватить. Пройдемся по решениям, начиная от самых легких.
#1 — Проверьте ресурсы RDS сервера
Убедитесь, что серверу хватает ресурсов, так как эта ошибка может возникать из-за нехватки оперативной памяти или дискового пространства. Проверьте загруженность оперативной памяти и достаточно ли свободного места на диске, где установлена операционная система (должно быть свободно хотя бы 1 GB). Также проверьте event log на предмет критических ошибок, связанных с RDS.
Если ресурсов хватает, переходим к следующему варианту.
#2 – Сброс сессии пользователя и завершение зависших процессов в RDS сессии
Сначала попробуем найти и принудительно сбросить сессию пользователя, который не может зайти на RDS сервер. В диспетчере задач, на вкладке Users найдите нужного пользователя и через контекстное меню кликаем “Log off”. В большинстве случаев, этого достаточно, но иногда в диспетчере задач вы можете обнаружить множество зависших сессий с именем “(4)” вместо имени пользователя. Как правило в зависшей сессии будет присутствовать 4 процесса:
- Client Server Runtime Process (csrss.exe)
- Desktop Windows Manager (dwm.exe)
- Windows Logon Application (winlogon.exe)
- Windows Logon User Interface
В первую очередь попробуйте завершить все зависшие сессии с (4) через диспетчер задач, как описано выше. Если это не поможет, то лучше всего перезагрузить сервер, но зачастую такой возможности нет, поэтому пробуем решить проблему без перезагрузки:
- Запустите командную строку с правами администратора и введите: query session
Она покажет всех пользователей и их сессии на терминальном сервере. В выводе команды есть 3 интересующих нас столбца: SESSIONNAME, USERNAME и ID. Найдите пользователя (4) и соответствующий ему ID, в данном примере ID 2. Нам нужно завершить процесс csrss.exe который работает под этой сессией, сначала найдем его.
- В командной строке введите: query process /id 2
Команда выведет все процессы, которые запущены в этой сессии. Нам нужно найти процесс csrss.exe и соответствующий ему PID. В моём случае PID будет 5140. Нам нужно завершить этот процесс.
- Сверимся по диспетчеру задач. Откройте диспетчер задач, перейдите на вкладку Details и найдите нужный вам PID и процесс.
Если нужный вам PID соответствует процессу csrss.exe, то завершите процесс через контекстное меню и End task, либо через командную строку: taskkill /F /PID 5140
Это нужно проделать с каждым пользователем “(4)”, если их несколько.
#3 — Сброс сессии пользователя через командную строку
Если разлогинить “проблемного” пользователя через диспетчер задач не удалось, можно попробовать сбросить сессию пользователя через командную строку.
-
- Запустите командную строку с правами администратора и введите query session
Скопируйте SESSIONNAME проблемного пользователя.
- Введите reset session . Вместо впишите нужное вам название сессии, как показано на скриншоте
- Запустите командную строку с правами администратора и введите query session
Это нужно сделать с каждым проблемным пользователем. Теперь можете попробовать залогиниться, проблема должна решиться. Если у вас есть возможность перезагрузить сервер, то лучше сделать это.
#4 – Проверьте настройки лицензирования хоста RDS
Проверьте, что у вас на RDSH хосте указан правильный сервер лицензирования и тип лицензии (CAL Per User/ CAL Per Device).
Адрес сервера с лицензиями RDS можно указать:
-
-
- В настройках RDS коллекции: Tasks -> Edit Deployment Properties -> RD Licensing;
- Через GPO: Use the specified Remote Desktop license servers (Computer Configuration -> Policies -> Admin Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing)
- С помощью PowerShell (см. статью “Не задан режим лицензирования для сервера узла сеансов удаленных рабочих столов”).
- В настройках RDS коллекции: Tasks -> Edit Deployment Properties -> RD Licensing;
-
#5 – Уберите лимит RDP подключений в GPO
Через групповые политики можно ограничить количество одновременных подключений по RDS. По умолчанию данная политика выключена.
С помошью gpresult нужно проверить, включена ли политика и какое в ней указано значение.
-
-
- Запустите командную строку с правами администратора и введите gpresult /H c:\gpresult.html
- Откройте файл gpresult.html, который лежит в корне диска C. Это обычный .html файл, рекомендуется открывать через internet explorer, так как в других браузерах он может отображаться некорректно;
- В разделе Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host\Connections найдите Limit number of connections, либо в поиске по странице наберите Limit number of connections.
-
Если такой политики нет, значит она не применяется и ограничений по количеству одновременных подключений нет. Если политика есть и указано количество одновременных подключений, измените её значение на нужное вам число. Изменить групповую политику можно через оснастку gpedit.msc, если политика настроена через доменные GPO, отредактируйте соответствующую политику через gpmc.msc. После того как отредактируете политику, не забудьте набрать в командной строке gpupdate /force для немедленного применения политики.
#6 — Нестандартные решения: если ничего не помогает
Если ресурсов у вас хватает, ошибок в журнале нет, перезагружаться нельзя, а сброс сессии по каким-то причинам не помог, то следует попробовать следующие варианты:
-
- Проверьте, что на RDS сервере не включен Drain режим, который запрещает пользователям новые RDP подключения: chglogon.exe /QUERY . Если команда вернет сообщение “New user logons are DISABLED, but reconnections to existing sessions are ENABLED”, отключите Drain режим: chglogon.exe /enable
- В настройках RDP подключения (mstsc.exe) на клиенте mstsc снимите галку «Постоянное кэширование точечных рисунков» («Persistent bitmap caching»);
- Перезагрузите службу RDS. В командной строке с правами администратора наберите net stop termservice и net start termservice . Либо перезапустите службу удаленно с помощью PowerShell: Get-Service termservice –ComputerName msk-rds1 | Restart-Service
- Принудительно убейте процессы tstheme.exe;
- Рекомендуется применить все последние обновления для вашей версии Windows, воспользуйтесь стандартными средствами обновления.