Не удается завершить требуемую операцию поскольку службы удаленных рабочих столов сейчас заняты 1с
Обновлено: 07.07.2024
Периодически некоторые пользователи не могут залогиниться на сервера RDS фермы Windows Server через стандартный rdp клиент с ошибкой:
Также несколько раз встречали такую картину: на вкладке Users диспетчера задач RDS хоста имеется множество зависших сессией пользователей с именами (4) вместо username и со статусом Disconnected.
Проблема встречается на всех версиях Windows Server: 2008 R2, 2012 R2, 2016 и 2019.
Ошибка может возникать по разным причинам:
- Ошибка в работе службы удаленных рабочих столов;
- Баг с процессом csrss.exe;
- Проблема с профилем пользователя или со службой profsvc;
- Нехватка оперативной памяти или дискового пространства на RDSH сервере;
- Некорректные настройки групповых политик.
К сожалению, на данный момент нет официального решения от Microsoft, которое бы полностью решало проблему, всё сводится к устранению симптомов.
Практически всегда проблема решается сбросом сессии проблемного пользователя и перезагрузкой RDS сервера, но в исключительных ситуациях этого может не хватить. Пройдемся по решениям, начиная от самых легких.
Убедитесь, что серверу хватает ресурсов, так как эта ошибка может возникать из-за нехватки оперативной памяти или дискового пространства. Проверьте загруженность оперативной памяти и достаточно ли свободного места на диске, где установлена операционная система (должно быть свободно хотя бы 1 GB). Также проверьте event log на предмет критических ошибок, связанных с 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)”, если их несколько.
Если разлогинить “проблемного” пользователя через диспетчер задач не удалось, можно попробовать сбросить сессию пользователя через командную строку.
Это нужно сделать с каждым проблемным пользователем. Теперь можете попробовать залогиниться, проблема должна решиться. Если у вас есть возможность перезагрузить сервер, то лучше сделать это.
Проверьте, что у вас на RDSH хосте указан правильный сервер лицензирования и тип лицензии (CAL Per User/ CAL Per Device).
У меня ошибка “Не удается завершить требуемую операцию, поскольку службы удаленных рабочих столов сейчас заняты” один раз была, когда после установки роли RDSH я забыл указать адрес сервера с ролью Remote Desktop Licensing. В этом случае два пользователя подключались нормально, а третий получал ошибку.Адрес сервера с лицензиями RDS можно указать:
Через групповые политики можно ограничить количество одновременных подключений по 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 для немедленного применения политики.
Если ресурсов у вас хватает, ошибок в журнале нет, перезагружаться нельзя, а сброс сессии по каким-то причинам не помог, то следует попробовать следующие варианты:
08.10.2019
Windows Server 2012 R2, Windows Server 2016
Один комментарийПри установке любой роли или компонента в Windows Server 2016 появляется ошибка, что сервер требует перезагрузки: “ The operation cannot be completed, because the server that you specified requires a restart ” ( Сбой запроса на добавление или удаление компонентов на указанном сервере. Не удается завершить операцию, так как требуется перезагрузить указанный сервер ). Ок, перезагружаем сервер, пытаемся установить роль и опять появляется ошибка, что нужна перезагрузка сервера. Но ошибка повторяется, и так дальше по циклу.
В результате не получается установить/удалить ни одну из ролей/компонентов на сервере.
В журнале событий сервера (Event Viewer -> Windows Logs -> System) при этом фиксируетсся ошибка EventID 7041 от источника Service Control Manager. В событии указано:
Как же добавить в локальную политику сервисную учетную запись? Единственный вменяемый способ, который мне удалось найти, чтобы предоставить права “Log on as a service” для NT SERVICE\ALL SERVICES – воспользоваться утилитой ntrights.exe (из старого пакета Windows Server 2003 Resource Kit).
Скачайте и установите Server 2003 Resource Kit (rktools.exe), затем предоставьте право SeServiceLogonRight командами:
cd “C:\Program Files (x86)\Windows Resource Kits\Tools”
ntrights.exe +r SeServiceLogonRight -u “NT SERVICE\ALL SERVICES”Проверяем, что NT SERVICE\ALL SERVICES появилось в разрешениях “Log on as a service” в консоли редактора политики.
Перезагрузите свой Windows Server и попробуйте установить/удалить роль. Все должно пройти без ошибки.
12.06.2020
Windows Server 2012 R2, Windows Server 2016, Windows Server 2019
комментариев 5При настройке нового узла RDS фермы на Windows Server 2012 R2/2016/2019 вы можете столкнуться со следующим всплывающим предупреждением, которое появляется в трее:
Licensing mode for the Remote Desktop Session Host is not configured.Remote Desktop Service will stop working in xxx days.
Не задан режим лицензирования для сервера узла сеансов удаленных рабочих столов. Служба удаленных рабочих столов перестанет работать через xxx дней.Судя по ошибке, служба RDS запущена в режиме льготного периода лицензирования (в течении пробного периода 120 дней вы можете использовать Remote Desktop Session Host без активации RDS лицензий). Когда grace период закончится, пользователи не смогут подключиться к RDSH, а в трее появится ошибка:
Похожую проблему я уже описывал в статье про RDS ошибку “Удаленный сеанс отключен, поскольку отсутствуют доступные серверы лицензирования удаленных рабочих столов”, но тут оказалось немного другое. Не задан режим лицензирования для сервера узла сеансов удаленных рабочих столовВ английской версии Windows Server ошибка выглядит так:
Licenses are not available for the Remote Desktop Session Host server, and RD Licensing Diagnoser has identified licensing problem for the RD Session Host server.
Licensing mode for the Remote Desktop Session Host is not configured.
The Remote Desktop Session Host server is within its grace period, but the Session Host server has not been configured with any license server.
Как вы видите, на самом деле доступных клиентам лицензий нет, т.к. режим лицензирования не задан.
Все это говорит о том, что администратор не задал для этого хоста сервер лицензирования RDS и/или режим лицензирования. Это несмотря на то, что при развертывании хоста RDS уже был указан тип лицензирования (Configure the deployment -> RD Licensing).
Отройте консоль PowerShell и проверьте, задан ли сервер лицензирования RDS с помощью следующих команд:
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.GetSpecifiedLicenseServerList()
Примечание. Командлет Get-RDLicenseConfiguration при этом может выводить совершенно другие, ошибочные данные.Если сервер лицензирования не задан, его можно указать командой:
$obj. SetSpecifiedLicenseServerList("rdslic1.winitpro.ru")Также вы можете принудительно задать параметры лицензирования RDS можно несколькими способами.
Через реестр:
В ветке HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Licensing Core нужно изменить значение DWORD параметра с именем LicensingMode с 5 на:
- 2 — если используется лицензирование на устройства (Per Device)
- 4 — при использовании RDS лицензирования на пользователей (Per User)
Вы можете изменить параметр реестра вручную через regedit.exe или следующими командами PowerShell из модуля управления реестром:
После внесения изменений нужно перезагрузить RDS хост.
Параметры сервера лицензирования RDS также можно задать через политики GPO (локальную или доменную политику).
Если сервер RDS находится в рабочей группе (не добавлен в домен Active Directory), используйте локальный редактор политик gpedit.msc. Перейдите в раздел Конфигурация компьютера -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Лицензирование (Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing).
Нас интересуют две политики:
После перезагрузки сервера откройте средство диагностики лицензирования RDS. Если вы все настроили правильно, должно появится число доступных RDS лицензий и указан режим лицензирования.
Если в вашей сети настроен файервол, необходим открыть следующие порты с RDSH хоста до сервера RDS лицензирования: TCP/135, UDP/137, UDP/138, TCP/139, TCP/445, TCP/49152–65535 (RPC диапазон).Вы можете проверить доступность портов с помощью комнадлета Test-NetConnection. Если порты закрыты на локальном брандмауэре Windows Defender Firewall, вы можете открыть порты с помощью командлетов из модуля NetSecurity.
Также обратите внимание, что, если на сервере RD Licensing Server установлена, например, Windows Server 2012 R2 и CAL для RDS 2012 R2, вы не сможете установить RDS CAL лицензии для Windows Server 2016 или 2019. Ошибка “Remote Desktop Licensing mode is not configured” сохранится, даже если вы указали правильные тип лицензий и имя сервера лицензирования RDS. Старые версии Windows Server просто не поддерживают RDS CAL для более новых версий WS.
При этом в окне RD License Diagnoser будет отображаться надпись:
Сначала Вам придется обновить версию Windows Server на сервере лицензирования (или развернуть новый RD License host). Более новая версия Windows Server (например, WS 2019 поддерживает RDS CAL для всех предыдущих версий Windows Server).
Описание проблемы
Есть RDS (Терминальная ферма), состоящая из двух посредников в режиме высокой доступности "High Availability" и 15 хостов подключения. Все, это добро работает на Windows Server 2012 R2. В один из прекрасных дней прилетела заявка, в которой пользователь не мог подключиться к терминальной ферме вот с такой формулировкой:
Не удается завершить требуемую операцию, поскольку службы удаленных рабочих столов сейчас заняты. Повторите попытку через несколько минут. Другие пользователи должны по-прежнему иметь возможность входа.Причины ошибки
Данная проблема качует еще с Windows Server 2008 R2, а может быть и раньше. Ниже я попытаюсь рассказать, что может быть полезным. Когда я увидел данную ошибку подключения к терминальному серверу, то первым делом я полез в консоль управления RDS фермой. Если вы не помните, то делается это из оснастки "Диспетчер серверов".
Мне было интересно, нет ли случайно на текущий момент у пользователя активной сессией, помните, такое уже было, когда мы видели ошибку "Задача, которую вы пытаетесь выполнить, не может быть завершена". Там в диспетчере задача висел зависший профиль пользователя в виде (4).
Попав в настройки коллекции служб удаленных рабочих столов, я произвел фильтрацию по активным сессиям и обнаружил нужного пользователя.
Я попытался выкинуть пользователя, сделав ему (Выйти - Log Off). Это не дало эффекта, сессия все так же висела, сделать "Отключиться (Disconnect)" так же не привело ни к каким действиям. Так же вы можете использовать для принудительного разлогирования учетной записи (4) утилиты qwinsta, tasklist, reset session и Stop-TSSession.
Дай думаю тогда зайду на сам узел сеансов удаленных рабочих столов (Session Host). Кто не помнит, как подключаться к нужному хосту сервера терминалов, прошу посетить ссылку слева.
Зайдя на Session Host, я пользовательскую сессию просто не обнаружил в диспетчере задач Windows, значит в настройках коллекции есть, а тут нет, и выкинуть ее не получается. Перезапуск оснастки "Диспетчер серверов", так же не дал результата.
Помня золотое правило Microsoft, семь бед, один ресет, я решил данный хост вечером перезагрузить, когда уже все закончат работу. Чтобы это правильно сделать, нужно закрыть новые подключения к нему, чтобы новые пользователи не могли к нему подключиться. Делается это из настроек коллекции RDS фермы. Выбираете в списке "Серверы узлов (Host Servers)", щелкните по нему правым кликом и выберите пункт "Не разрешать новые подключения (Do not allow new connections)". В итоге на против вашего узла сеансов удаленных рабочих столов, сменится статус с "Истина (True)" на "Ложь (False)". Что будет означать, невозможность новых подключений.
Сделал я это и забыл, стал ждать вечера, чтобы перезагрузить сервер. Проходит минут 10 и что я вижу, что пользователь пропал из активных подключений в оснастке управления коллекциями терминальных серверов. Я попросил его попробовать подключиться к терминалу, и все успешно было выполнено. Видимо какой-то был глюк в связке посредника подключений (connection broker) и узлом подключения, который не правильно отдавал информацию, о сессиях.
Дополнительные варианты решения
Если у вам не помогло мое решение и ошибка "Не удается завершить требуемую операцию, поскольку службы удаленных рабочих столов сейчас заняты" у вас все так же высвечивается, то можно попробовать все же перезагрузить нужный хост. Если перезагрузка не помогла, то советую проверить настройки на стороне клиента, а именно в окне mstsc (Подключение к удаленному рабочему столу), выберите показать параметры.
Перейдите на вкладку "Взаимодействие" и снимите галку "Постоянное кэширование точечных рисунков"
В большинстве случаев, это решает проблему. Если вам это не помогло, то советую:
Причины ошибки с занятыми службами 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.Или русский вариант: Задача, которую вы пытаетесь выполнить, не может быть завершена, потому что в настоящее время заняты службы удаленного рабочего стола. Попробуйте повторить попытку, через несколько минут. Остальные пользователи, по прежнему смогут логиниться на сервер
Не удается завершить требуемую операцию, поскольку службы удаленных рабочих столов сейчас занятыКак видите пользователя отфутболивает и он не может попасть на сервер.
Основные причины такого поведения
- Первый вариант, это заглючила служба удаленных рабочих столов
- Сильная загрузка сети на сервере с перемещаемыми профилями
- Проблема с профилем пользователя. Эта проблема возникает из-за проблемы синхронизации в службе профиля пользователя (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, пробуем его отключить, в диспетчере задач. По идее, это должно помочь устранить ошибку подключения "Задача, которую вы пытаетесь выполнить, не может быть завершена, потому что в настоящее время заняты службы удаленного рабочего стола. Попробуйте повторить попытку, через несколько минут. Остальные пользователи, по прежнему смогут логиниться на сервер".
- Если, этот метод вам не помог, то в некоторых случаях, с виртуальными машинами помогает вариант отключения и включения доступа по 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" и вы продолжили работу.
Проверка загрузки сети и процессора
Так как при создании моей RDS HA фермы я применял концепцию перемещаемых профилей, не буду спорить, хорошо это или плохо, у каждого свое видение. Данная вариация хранит все пользовательские профили на выделенном сервере, в моем случае DFS HA сервера и при подключении пользователя к RDSH хосту идет загрузка этого профиля по сети. У меня это канал 10 ГБ и при нагрузке в 1100 человек я не испытываю проблем в час пик.
В Zabbix я отчетливо видел, что с 9 утра, когда пользователи ринулись на работу, сетевой интерфейс на сервере был забит на 100%
Так же привлекла высокая нагрузка на процессор (CPU), она была под 100%, что очень плохо.
Посмотрев процессы на сервере я увидел старого знакомого, антивирус Касперского, который после обновления агента просто скушал все процессорные мощности, после его деактивации, все пользователи успешно зашли на терминал. Получилось, что после обновления агента Касперского, он начал создавать новый индекс файлов, что есть на сервере, где он установлен. Вот график после его отключения.
Читайте также: