Періодично деякі користувачі не можуть залогінитися на сервера RDS ферми Windows Server через стандартний rdp клієнт з помилкою:

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

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 on.

Завдання, яке ви намагаєтеся виконати, не може бути виконане, оскільки служби віддаленого робочого столу зараз зайняті.  Інші користувачі все одно повинні мати можливість входу.

Також кілька разів зустрічали таку картину: на вкладці Users диспетчера задач RDS хоста є безліч завислих сесією користувачів з іменами (4) замість username і зі статусом Disconnected.

завислі сесії (4) на rds термінальному сервері

Проблема зустрічається на всіх версіях 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 процесу:

  • Процес виконання клієнтського сервера (csrss.exe)
  • Диспетчер Windows для робочого столу (dwm.exe)
  • Програма для входу в систему Windows (winlogon.exe)
  • Інтерфейс користувача Windows Logon

В першу чергу спробуйте завершити всі завислі сесії з (4) через диспетчер задач, як описано вище. Якщо це не допоможе, то найкраще перезавантажити сервер, але найчастіше такої можливості немає, тому пробуємо вирішити проблему без перезавантаження:

  1. Запустіть командний рядок з правами адміністратора і введіть: query session
    query session вивести всі сесіїВона покаже всіх користувачів і їх сесії на термінальному сервері. У висновку команди є 3 цікавлять нас стовпці: SESSIONNAME, USERNAME і ID. Знайдіть користувача (4) і відповідний йому ID, в даному прикладі Ідентифікатор 2. Нам потрібно завершити процес csrss.exe який працює під цією сесією, спочатку знайдемо його.
  2. У командному рядку введіть: query process /id 2
    процес запиту за ідентифікаторомКоманда виведе всі процеси, які запущені в цій сесії. Нам потрібно знайти процес csrss.exe і відповідний йому PID. У моєму випадку PID буде 5140. Нам потрібно завершити цей процес.
  3. Звіримося по диспетчеру задач. Відкрийте диспетчер задач, перейдіть на вкладку Details і знайдіть потрібний вам PID і процес.завершити процес csrss.exe, зависла rds сесіяЯкщо потрібний вам PID відповідає процесу csrss.exe, то завершите процес через контекстне меню і End task, або через командний рядок: taskkill /F /PID 5140

Це потрібно зробити з кожним користувачем “(4)”, якщо їх декілька.

# 3 – Скидання сесії користувача через командний рядок

Якщо разлогініть “проблемного” користувача через диспетчер задач не вдалося, можна спробувати скинути сесію користувача через командний рядок.

    1. Запустіть командний рядок з правами адміністратора і введіть query sessionquery session rds - вивести список сесійСкопіюйте SESSIONNAME проблемного користувача.
    2. Введіть reset session <SESSIONNAME>. Замість впишіть потрібне вам назву сесії, як показано на скріншотіскидання сеансу

Це потрібно зробити з кожним проблемним користувачем. Тепер можете спробувати залогінитись, проблема повинна зважитися. Якщо у вас є можливість перезавантажити сервер, то краще зробити це.

# 4 – Перевірте настройки ліцензування хоста RDS

Перевірте, що у вас на RDSH хості вказана правильна сервер ліцензування і тип ліцензії (CAL Per User / CAL Per Device).

У мене помилка “Неможливо завершити необхідну операцію, оскільки служби віддалених робочих столів зараз зайняті” один раз була, коли після установки ролі RDSH я забув вказати адресу сервера з роллю Remote Desktop Licensing. У цьому випадку два користувача підключалися нормально, а третій отримував помилку.

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

# 5 – Приберіть ліміт RDP підключень в GPO

Через групові політики можна обмежити кількість одночасних підключень по RDS. За замовчуванням ця політика вимкнена.

З помошью gpresult потрібно перевірити, чи політика і яке в ній вказано значення.

      1. Запустіть командний рядок з правами адміністратора і введіть gpresult /H c:gpresult.html
      2. Відкрийте файл gpresult.html, який лежить в корені диска C. Це звичайний .html файл, рекомендується відкривати через internet explorer, так як в інших браузерах він може відображатися некоректно;
      3. В розділі Конфігурація комп’ютера -> Адміністративні шаблони -> Компоненти Windows -> Послуги віддаленого робочого столу -> Хост сеансу віддаленого робочого столу Підключення знайдіть Обмежена кількість з’єднань, Або в пошуку по сторінці наберіть Обмежена кількість з’єднань.

Якщо такої політики немає, значить вона не застосовується і обмежень по кількості одночасних підключень немає. Якщо політика є і вказано кількість одночасних підключень, змініть її значення на потрібне вам число. Змінити групову політику можна через оснащення gpedit.msc, Якщо політика налаштована через доменні GPO, відредагуйте відповідну політику через gpmc.msc. Після того як відредагуєте політику, не забудьте набрати в командному рядку gpupdate /force для негайного застосування політики.

# 6 – Нестандартні рішення: якщо нічого не допомагає

Якщо ресурсів у вас вистачає, помилок в журналі немає, перезавантажуватися не можна, а скидання сесії з якихось причин не допоміг, то слід спробувати наступні варіанти:

    • Перевірте, що на RDS сервері не включено Drain режим, який забороняє користувачам нові RDP підключення: chglogon.exe /QUERY . Якщо команда поверне повідомлення “Входи нових користувачів ВІМКНЕНІ, але ПІДКЛЮЧЕННЯ до існуючих сеансів ВИМКНЕНО“, Вимкніть Drain режим: chglogon.exe /enable chglogon - відключити drain режим на RDS
    • В налаштуваннях RDP підключення (mstsc.exe) на клієнті mstsc зніміть галку «Постійне кешування точкових малюнків» ( «Persistent bitmap caching»); відключіть кешування в налаштуваннях RDP клієнта
    • Перезавантажте службу RDS. У командному рядку з правами адміністратора наберіть net stop termservice і net start termservice. Або перезапустіть службу віддалено за допомогою PowerShell: Get-Service termservice –ComputerName msk-rds1 | Restart-Service
    • Примусово убийте процеси tstheme.exe;
    • Рекомендується застосувати всі останні оновлення для вашої версії Windows, скористайтеся стандартними засобами оновлення.

Leave a Reply

Your email address will not be published. Required fields are marked *