Удаление неактивных портов TS на RDS ферме при ошибке ID 7011
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов России Pyatilistnik.org. В прошлый раз я вам подробно рассказал, как сделать из Windows 10 терминальный сервер, позволяющий одновременно работать, большому количеству людей. Сегодня я хочу вам рассказать, что вы еще можете оптимизировать на свой RDS ферме, чтобы она могла работать стабильно, без зависаний и без проблем с поврежденными профилями. В данной заметке расскажу, что такое неактивные порты TS, мы рассмотрим причины и решение ошибки "Превышение времени ожидания (240000 мс) при ожидании ответа транзакции от службы UmRdpService". Думаю, что мой опыт оптимизации вам окажется полезен.
Описание проблемы на сервере RDSH
И так, есть RDS ферма HA. На одном из серверов удаленного подключения (RDSH) появляется несколько ошибок:
Сам сервер терминалов работает на операционной системе Windows Server 2012 R2, ранее на нем периодически возникали другие проблемы:
- TDI Driver vnetflt не сертифицирован
- При попытке произвести выход из системы, это не давало ни каких результатов, сессия пользователя продолжала висеть как активная.
- Не получалось сбросить терминальную сессию пользователя
- Зависала виртуальная машина
- Повреждение профиля пользователя, и последующая работа с временным профилем
- Уменьшение скорости работы сервера
Как найти и удалить неактивные порты TS
Одной из причин такого нестабильного поведения операционной системы Windows Server с ролью терминальных служб, является накопление неактивных портов TS от перенаправляемых принтеров. Из-за этого может зависать ряд служб, как например "UmRdpService" или диспетчер печати. В таких ситуациях вы должны их очищать, дабы держать вашу RDS ферму в рабочем состоянии.
Для начала давайте узнаем, где располагаются данные неактивные TS порты. Откройте редактор реестра Windows и перейдите в раздел:
Как видите в моем пример, тут огромное количество старых, не актуальных записей #TS001 и так далее, вплоть до #TS991. Обратите внимание, на ключ реестра Port Description и его значение Inactive TS Port, которое явно ссылается, на что-то чего уже нет. Вот из-за такой захламленности RDS ферма может работать не так эффективно и стабильно. В ветке обсуждения на Microsoft, так же обсуждалась проблема долгого времени входа в систему при установке сеанса удаленного рабочего стола на сервере RDS фермы.
Все, что нужно, так это просто удалить все эти ветки реестра, это хорошо когда их 10 или 15, но когда сотни, уже сложнее. Для замены рутинной работы, есть замечательная утилита InactiveTSPortList.exe и ее продолжение для связке с PowerShell DeleteInactivePortSilently.exe.
Открываем командную строку от имени администратора и переходим в расположение утилиты через команду cd и путь. Вводим команду для вызова справки утилиты InactiveTSPortList.exe.
Как видим есть два ключа:
- InactiveTSPortList /r - показывает список неактивных TS портов в системе
- InactiveTSPortList /d - удаляем все неактивные TS порты от перенаправляемых устройств
Для начала я вывожу список всех неактивных портов, пишем InactiveTSPortList /r. как видите получился внушительный список.
Теперь удаляем все неактивные порты, если боитесь, то можете до этого произвести экспорт данной ветки, на случай восстановления реестра. вводим InactiveTSPortList /d и видим, что записи, типа #TS991 will be deleted удалены.
Проверим еще раз наличие проблемных, мусорных записей и видим. что у меня уже нет "Inactive TS Port".
Проверяем наш куст реестра и видим, что все чисто
далее для ошибки "Превышение времени ожидания (240000 мс) при ожидании ответа транзакции от службы UmRdpService, NcbService, ScDeviceEnum" компания Microsoft советует создать один ключ реестра:
Находим тут ключ ServicesPipeTimeout, если его нет, то создаем REG-DWORD. В моем примере стоит сейчас значение 240000, я увеличу его до 6 секунд. это 60000
Еще я вам советую отключить параметры сетевого интерфейса:
- netsh int tcp show global - Смотрим текущее состояние
- netsh int tcp set global chimney=disabled
- netsh int ip set global taskoffload=disabled
- netsh int tcp set global rss=disabled (Под вопросом)
Так же не забываем в командной строке выполнить по очереди три команды, по выявлению проблем с целостностью системных файлов и ошибок на диске.
- sfc /scannow после
- Dism /online /cleanup-image /restorehealth
- и затем ChkDsk /r, потом перезагрузка
- www.sysengineering.ru/blog/servers-скрипт-обслуживания-сервера-rds-версия-2/
- www.sysengineering.ru/administration/rds-server-mainteinance-script/
На этом у меня все, мы с вами научились удалять старые записи от перенаправляемых устройств на RDS ферме (Удаление неактивных портов TS), научились исправлять ошибку с кодом ID 7011 Превышение времени ожидания (240000 мс) при ожидании ответа транзакции от службы UmRdpService". Наладили работу RDS фермы. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Все таки нужно уменьшить до 60000 или увеличить время ожидания?