Не работает терминальная сессия

Не работает терминальная сессия

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В прошлый раз мы с вами научились отключать тестовый режим windows 10, так что двигаемся дальше. Так уж повелось, что я очень часто стараюсь писать про RDS фермы и терминальные столы, которые являются неотъемлемой частью рабочей инфраструктуры, практически на любом среднем и крупном предприятии. Как следствие, хоть вы и можете организовать отказоустойчивость посредников подключений (брокеров RDS) и сделать нужное вам количество хостов подключений, это не избавит вас от ситуации, что Session Host (отдельный) может выходить из строя или приходить в глючное состояние. Сегодня я как раз и хочу поговорить, об одной такой ситуации с отдельным хостом подключения в RDS ферме, а именно у пользователя при корректном выходе с него, бесконечно долго висит экран с надписью «Выход из системы«, как следствие он не может подключиться к другом хосту. Давайте смотреть в чем проблема и как она решается.

Описание проблемы

Есть RDS ферма на основе Windows Server 2012 R2, состоящая из двух посредников подключений (Connection broker) и 15 хостами подключений (Session Host). Ко мне обратился пользователь, который не мог попасть на терминальный стол. Его сессия была активной. Я попытался сбросить терминальную сессию, но эффекта это не дало, у человека висел экран выхода из системы и больше ничего не происходило. Так как брокеры видели, что его сессия еще активна, то они при последующих попытках перекидывали его именно на данный терминальный стол, в результате он не мог работать. Выглядит это вот так.

В данной реализации RDS фермы настроены перемещаемые профили, располагающиеся на сетевом ресурсе. Вот некоторые симптомы ситуации:

  • У вас есть сервер служб удаленных рабочих столов (RDS) на основе Windows Server 2008 R2 SP1 или выше, на котором установлена ​​функция Windows Desktop Search (WDS).
  • Учетные записи пользователей настроены на использование перемещаемых профилей, когда пользователи входят на сервер RDS с помощью протокола удаленного рабочего стола (RDP).
  • Вы включаете следующий параметр групповой политики для удаления кэшированных копий перемещаемых профилей при выходе пользователя из системы:

Если посмотреть логи Windows, то вы можете обнаружить ряд ошибок с кодом ID 7011, что «Превышение времени ожидания (30000 мс) при ожидании ответа транзакции от службы»

Возможные причины

  • Эта проблема возникает из-за накопления устаревших записей реестра. Следовательно, приложению, использующему Crawl Scope Manager (CSM) для запроса правил области, требуется много времени для перечисления устаревших записей реестра.
  • После выхода из системы файл splwow64.exeпродолжает работу

Устранение проблемы с висящим выходом с терминала

Данная ситуация для меня не нова, я ее еще наблюдал с Windows Server 2008 R2, где все решалось определенным обновлением, но в случае с Windows Server 2012 R2, это пол дела, от нас потребуется по мимо обновлений, внести правки в реестр. Так что начинаем. Первым делом, чтобы количество людей попавших в данную ситуацию не увеличилось, вам необходимо запретить новые подключения к данному хосту. Сделать, это можно из оснастки управления RDS фермой. В данном случае вы переводите хост в режим стока (drain mode).

Далее вы пробуете сами попасть на данный хост, где будите ждать когда остальные пользователи закончат свою работу и вы сможете начать исправления глюка с выходом из системы терминальной сессии людей. Далее первым этапом, вы должны установить все доступные исправления безопасности Windows. Напоминаю, что делается это в панели управления или в параметрах Windows, все зависит от версии системы. так, это выглядит в системах до Windows Server 2016

И вот так уже в системах после Windows Server 2016

После того, как вы произвели установку всех обновлений перезагрузите ваш сервер. Кстати, когда я через PowerShell решил посмотреть ID и статусы сессий на терминальном столе, то увидел необычный для себя статус «Down», это как раз и были люди, у кого висел выход из системы.

Еще одной из рекомендаций в данной ситуации, это отключение службы поиска Windows. Напоминаю, что в Windows Server 2012 R2 и выше, данная служба устанавливается, как компонент, если она вам не нужна, то удалите его.


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

Одним из сценариев, который соответствует этому критерию, является печать из 32-разрядного приложения на 64-разрядном узле сеансов удаленных рабочих столов. Это действие печати вызовет splwow64.exe, 32 и 64-разрядный процесс thunking для спулера. Splwow64.exe имеет 3-минутный тайм-аут для предотвращения повторного запуска процесса во время интенсивной печати, поэтому он не завершается сразу после завершения печати. Это может привести к тому, что удаленный сеанс будет казаться «зависшим».

Чтобы это исправить я вам советую создать ключ реестра. Для этого открываем ветку:

Создаем новую запись REG_DWORD с именем splwow64.exe и значением 0.

Таким же образом я вам советую добавить сюда же ключ REG_DWORD с именем wrsa.exe и значением 0 (https://en.wikipedia.org/wiki/Winsock)

Еще я вам советую слегка увеличить значение одного параметра в реестре WaitToKillServiceTimeout. WaitToKillServiceTimeout — это параметр отвечающий за, то чтобы система закрыла все фоновые приложения. Windows обычно ждет 5 секунд, чтобы фоновые службы очистились и закрылись, когда вы делаете выход из системы или выключаете компьютер. Некоторые приложения могут изменить это значение при установке, предоставляя своим фоновым службам дополнительное время для очистки. Windows принудительно закрывает фоновые службы после этого периода времени. Это значение определяет, сколько секунд Windows ожидает, прежде чем сделать это. Windows автоматически выключится, если все службы будут успешно закрыты до истечения таймера. Я не советую ставить данное значение ниже 2-х секунд, это 2000. В нашей ситуации, когда у вас бесконечно долго висит надпись выход из системы, я советую выставлять WaitToKillServiceTimeout на 15-20 секунд, это значения 15000 или 20000.

Сделать это можно по пути:

И выставите у ключа WaitToKillServiceTimeout нужное значение. Далее желательно перезагрузить терминал и проверить есть ли проблемы с выходом из системы.

Как выкинуть застрявшую сессию, если пока сервер перезагружать нельзя

Выше я уже приводил ссылку на то, как разлогинивать зависшую сессию на терминалах, там мы использовали утилиты rwinsta, logoff или командлеты PowerShell, но к сожалению они не всегда работают. Ниже я покажу, как можно еще попробовать сбросить сессию пользователя, на момент когда у него происходит выход из системы.

Что мы делаем, воспользуемся утилитой qwinsta или любым ее аналогом, коих много. Для начала нужно выяснить ID сеанса у нужного пользователя, для этого введите:

В моем примере, есть пользователь barboskin.g и его ID сессии 109.

Далее вам необходимо открыть командную строку в режиме администратора и ввести вот такую команду, которая убьет все процессы у данной сессии.

Кстати посмотреть текущие процессы у данного сеанса, можно командой:

Еще после выполнения команды taskkill, у вас в списке пользователей может остаться висеть пользователь с именем (4), просто убейте его из диспетчера задач, должно получиться. Так же вы можете использовать удобную утилиту Process Explorer. зная ID сессии, вы так же можете попытаться завершить нужные вам процессы.

Еще вам советую провести диагностику целостности системных файлов, через утилиту:

После чего, еще выполнить:

Дополнение 18.06.2019

Так же еще опытным путем было выяснено, что данная проблема можете возникать, из-за:

  • Старой версии VMware Tools, советую установить самую последнюю
  • Из-за типа сетевого интерфейса, на сбойной виртуальной машине был выставлен E100E, а не VMXNET3
  • Так же был удален TDI vShield Endpoint драйвер
  • Еще разбирая логи системы, я обнаружил, что перед тем, как на сервере начинались проблемы, сыпались ошибки с кодом ID 372, ID 600, ID 601, в таких случаях, это были отголоски старых драйверов, которые были заменены на EasyPrint чисткой спулера через задания, на постоянной основе, так как было много зависших заданий.

Источник

Ошибки терминального сервера

Как настроена работа терминального сервера

Терминальный сервер служит для организации работы по следующему сценарию — приложение запущено на удаленном компьютере (сервере), на нем же производятся все основные, требующие ресурсов операции и вычисления, а на клиентском устройстве выполняется только ввод и вывод данных.

Неоспоримые преимущества сервера терминалов:

  • Производительность — можно использовать такие приложения, для работы которых у клиентского устройства не хватает ресурсов. Например, часто так используют сервер терминалов 1С.
  • Упрощение администрирования — не нужно устанавливать приложение каждому сотруднику, достаточно поставить его на сервере.
  • Легко добавлять новые рабочие места в существующую конфигурацию.
  • Установка терминального сервера обеспечит стабильную работу даже при низкой пропускной способности сети, ведь по ней будет передаваться минимум данных
  • Экономия на стоимости ПО и оборудования — терминальные лицензии на ПО обычно стоят дешевле стандартных, а приобретение одного сервера скорее всего потребует меньше средств, чем обновление всего парка компьютеров и ноутбуков в компании.

Однако в использовании терминальных серверов есть и свои сложности:

  • Во-первых, для настройки сервера терминалов и поддержки работы терминальной сети требуется системный администратор со специфическими знаниями именно в области управления терминальными серверами.
  • Во-вторых, для поддержки нескольких интерактивных сеансов пользователей терминальный сервер на Windows обычно предъявляет более высокие требования к “железу”, чем аналогичный сервер Windows, обеспечивающий работу того же количества пользователей по традиционному сценарию “клиент/сервер”.
  • И в-третьих, ошибка такого сервера остановит работу сразу всех подключенных к нему пользователей, так что критически важна его отказоустойчивость.Этот аспект мы и рассмотрим в данной статье — какие бывают ошибки терминального сервера и как с ними бороться.

Типичные ошибки и проблемы в терминал сервере

  • Одна из самых типичных ошибок в терминал-сервере — не установлен сервер лицензирования или не настроено лицензирование сервера терминалов. В таком случае в первую очередь убедитесь, что сервер лицензирования существует, что он активирован и клиентские лицензии есть в наличии. Иногда достаточно будет очистить кэш клиентской лицензии: зайти на рабочую станцию, у которой возникли проблемы с лицензированием, с правами администратора и в реестре вручную удалить ключ лицензии.
  • Вторая частая проблема терминального сервера тоже связана с лицензированием — когда Windows server терминалов и сервер лицензий физически развернуты на разных машинах, они могут не найти друг друга. Например, маршрутизатор или брандмауэр могут этому помешать. Убедитесь, что сервер лицензий в сети и к нему физически можно подключиться, что настроена роль терминального сервера, проверьте настройки области обнаружения сервера лицензирования, удостоверьтесь, что операционная система для терминального сервера совместима с сервером лицензирования. Если автоматически подключиться не получается, попробуйте задать путь к серверу лицензирования вручную.
  • Ошибка “Для сервера терминалов достигнуто максимальное число подключений”. Скорее всего есть неактивные пользовательские сеансы, которые забыли закрыть. Отключите такие сеансы вручную, а в дальнейшем рекомендуем настроить сервер терминалов так, чтобы бездействующие сеансы сами отключались через определенное время.
  • Пользователь не подключается к серверу терминалов? Проверьте, действительно ли служба терминалов запущена, открыты нужные порты сервера, у учетной записи пользователя есть все необходимые права доступа.
  • Не работает установка программ на терминальном сервере. Проверьте в настройках конфигурации, что для администратора включено разрешение устанавливать ПО из терминальной сессии и что групповые политики безопасности это позволяют.
  • Терминальный сервер не сохраняет пароли. Необходимо включить разрешение сохранять пароли для данного компьютера в настройках локальной групповой политики.

Что делать, если не работает терминальный сервер

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

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

Как предотвратить проблемы с терминальным сервером

Наши рекомендации тут предельно просты — чтобы свести число ошибок к минимуму, необходимо профилактическое обслуживание. Оно должно включать мониторинг терминального сервера, регулярную очистку терминального сервера от временных файлов и другого “мусора”, контроль интернет-трафика терминального сервера, дефрагментацию, соблюдение политик безопасности (например, регулярную смену пользовательских паролей), физическую чистку оборудования от пыли и замену термопасты, проверку антивирусным ПО с актуальными базами. Антивирус для терминального сервера рекомендуем выбрать из тех, которые специально разработаны для работы с серверами, обычно на это указывает наличие в названии Server Edition.

Есть несколько полезных приемов защиты терминального сервера, которые помогут обеспечить безопасность сервера терминалов:

  • сменить стандартный порт RDP
  • запретить подключения учетных записей с пустым паролем, настроить блокировку после нескольких попыток входа с неправильным паролем
  • использовать протокол SSL/TLS, если подключение к терминальному серверу идет не по VPN

Специалисты ГК Интегрус готовы бесплатно проконсультировать вас по любым вопросам, связанным с использованием терминальных серверов.

Также мы квалифицированно выполняем все работы по внедрению, настройке и обслуживанию терминального сервера. В нашу компетенцию входят:

  • проект терминального сервера, установка и настройка, создание серверной “под ключ”
  • аудит, профилактическое обслуживание и обновление терминальных серверов
  • срочный ремонт, восстановление данных после сбоя терминального сервера
  • сброс и удаление сервера терминалов при модернизации ИТ-инфраструктуры.

Источник

Читайте также:  Windows 10 не могу войти не работает клавиатура
Оцените статью