Почему зависает рандомно клиентский сеанс 1С в терминале (RDP)?

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Многие системные администраторы и специалисты по поддержке сталкиваются с ситуацией, когда клиентское приложение 1С перестает отвечать на действия пользователя. Особенно неприятно, когда это происходит в виртуализированной среде при работе через удаленный рабочий стол (RDP).

Проблема часто носит "плавающий" характер: зависания происходят в случайные моменты времени, на разных формах и отчетах, и, что самое сложное для диагностики, не оставляют следов в Журнале регистрации.

В этой статье мы подробно разберем причины такого поведения, проанализируем настройки среды виртуализации и самой платформы 1С, а также рассмотрим пошаговые методы устранения этих зависаний.

Симптоматика и анализ ситуации

Рассмотрим типичный сценарий: имеется сервер 1С и SQL на одной виртуальной машине, и терминальный сервер (RDP) для пользователей на другой. Обе машины физически находятся на одном сервере. Используется современная версия платформы (например, ветка 8.3.23). Пользователи работают в режиме ТонкийКлиент.

Основные симптомы:

  1. Клиент 1С "виснет наглухо", статус "Не отвечает" в диспетчере задач.
  2. Сообщений о разрыве соединения ("Сервер не отвечает") не появляется.
  3. В Журнале регистрации в момент зависания записей нет.
  4. Сворачивание окна через "Показать рабочий стол" иногда позволяет увидеть интерфейс, но он остается неактивным. В этот момент для диагностики полезно выполнить теневое подключение к RDP сессии, чтобы увидеть, отрисовалось ли окно ошибки или модальное окно под основным интерфейсом.

Давайте разберем комплекс мер, которые помогут локализовать и устранить эту проблему, двигаясь от настроек платформы к системным настройкам сети и виртуализации.

Решение 1: Отключение аппаратного ускорения графики

Начиная с версий платформы 8.3.23, изменились механизмы отрисовки интерфейса. В виртуальных средах и RDP-сессиях 1С часто конфликтует с драйверами видеокарты или их эмуляцией при рендеринге сложных форм.

Мы рекомендуем принудительно отключить аппаратное ускорение для клиента 1С. Это выполняется через конфигурационный файл conf.cfg.

Порядок действий:

  1. Перейдите в папку с установленной платформой на терминальном сервере (обычно это C:\Program Files\1cv8\8.3.xx.xxxx\bin\conf).
  2. Откройте или создайте файл conf.cfg.
  3. Добавьте в него следующую строку:

DisableHWAcceleration=1

В некоторых случаях также помогает явное указание режима отрисовки через параметр GraphicsMode. Это заставляет платформу использовать более простые механизмы GDI вместо DirectX/OpenGL, которые могут некорректно работать в виртуальной среде.

Решение 2: Настройка транспортных протоколов RDP (TCP vs UDP)

Современные версии Windows Server по умолчанию используют протокол UDP для RDP-сессий. Это сделано для улучшения плавности воспроизведения видео и звука. Однако 1С:Предприятие крайне чувствительно к даже минимальным потерям пакетов, которые допустимы в UDP, но критичны для транзакционной целостности интерфейса.

Если канал связи работает по UDP, "микро-разрывы" могут не фиксироваться командой ping, но приводить к тому, что клиент 1С перестает получать ответы от сервера отрисовки и зависает.

Мы рекомендуем перевести RDP принудительно на TCP:

  1. Откройте редактор групповых политик (gpedit.msc) на сервере терминалов.
  2. Перейдите по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Подключения.
  3. Найдите политику "Выбор транспортных протоколов RDP".
  4. Установите значение "Включено" и выберите "Использовать только TCP".
  5. Обновите политики командой gpupdate /force или перезагрузите сервер.

Решение 3: Проверка типа клиента и стабильности соединения

В обсуждениях часто упоминается разница в поведении между тонким и толстым клиентом. ТонкийКлиент оптимизирован для передачи минимального объема данных, но он может быть менее устойчив к кратковременным потерям связи в специфических условиях виртуализации. ТолстыйКлиент держит соединение более "жестко".

Для диагностики попробуйте перевести проблемных пользователей на толстый клиент (если конфигурация это позволяет, например, в режиме управляемого приложения). Если зависания прекратятся или сменятся явными ошибками сети, это подтвердит гипотезу о проблемах на сетевом уровне.

Решение 4: Сетевые настройки виртуализации (TCP Offloading)

Поскольку сервер 1С и клиентская часть находятся на виртуальных машинах в рамках одного физического хоста, проблема часто кроется в работе виртуальных сетевых адаптеров (например, VMXNET3 или VirtIO). Технологии разгрузки сети (Offloading), призванные снизить нагрузку на CPU, могут некорректно обрабатывать пакеты 1С.

Давайте отключим эти функции на уровне гостевых ОС (и на сервере 1С, и на терминальном сервере):

  1. Зайдите в свойства сетевого адаптера -> Настроить -> Дополнительно.
  2. Найдите и отключите (установите в Disabled) следующие параметры:
    • IPv4 Checksum Offload
    • TCP Checksum Offload (IPv4 и IPv6)
    • Large Send Offload (LSO)

Это переложит задачу обработки пакетов на центральный процессор, что исключит ошибки драйвера виртуализации.

Решение 5: Проблема с драйверами принтеров (Easy Print)

Неочевидная, но распространенная причина зависаний при открытии форм документов или таблиц — это опрос подсистемы печати. Если в RDP-сессию пробрасываются локальные принтеры пользователя через технологию Easy Print, 1С может зависнуть, пытаясь получить их статус.

Диагностика:

  1. Попробуйте временно отключить проброс принтеров в настройках RDP-клиента перед подключением.
  2. Если зависания исчезнут, проблему нужно решать установкой "родных" драйверов на сервер или использованием специализированного ПО для управления печатью (например, ScrewDrivers).

Решение 6: Выбор версии платформы

Не стоит исключать и ошибки самой платформы. Версия 8.3.23.2137, упомянутая в исходной проблеме, известна рядом проблем с утечками памяти в процессе rphost и нестабильной работой в терминале. Если процесс завис на сервере, для оперативного вмешательства можно использовать WEB приложение для управления сеансами "1С сервера", которое позволяет завершать процессы rphost без полного доступа к консоли сервера.

Мы рекомендуем рассмотреть переход на:

Решение 7: Анализ через Технологический журнал (ТЖ)

Если ни одно из вышеперечисленных решений не помогло, нам необходимо понять, что происходит "под капотом" в момент зависания. Стандартный журнал регистрации здесь бессилен, так как он фиксирует только свершившиеся события.

Настроим сбор технологического журнала. Нам потребуется отслеживать события SCALL (серверный вызов) и CALL (клиентский вызов) с фильтром по длительности. Это позволит увидеть, на каком именно запросе система "встала".

Пример конфигурационного файла logcfg.xml для поиска длительных операций:


<config xmlns="http://v8.1c.ru/v8/tech-log">
 <log location="C:\logs\1c" history="24">
  <event>
   <eq property="name" value="SCALL"/>
   <gt property="duration" value="100000"/> <!-- 10 секунд -->
  </event>
  <event>
   <eq property="name" value="CALL"/>
   <gt property="duration" value="100000"/>
  </event>
  <property name="all"/>
 </log>
</config>

Анализ логов покажет: либо запрос уходит на сервер и там зависает (проблема SQL, блокировок, кода), либо запрос даже не формируется (проблема клиента, графики, ОС). Чтобы быстро интерпретировать полученные данные, рекомендуем использовать внешний отчет на СКД "Ошибки технологического журнала", который поможет визуализировать проблемы без ручного разбора XML.

Для построения системы постоянного мониторинга можно настроить экспорт технологического журнала 1С в Elastic с помощью Logstash. При настройке парсинга обратите внимание на структуру событий: часто для корректной обработки требуется предварительная обработка, где мы убираем лишние переносы строк в тексте события.

Заключение

Проблема "тихого" зависания клиента 1С в RDP почти всегда решается комплексно. Чаще всего виновником является комбинация нового механизма рендеринга платформы (решается через conf.cfg) и сетевых настроек протокола RDP (переключение на TCP). Последовательно применяя описанные выше методики, вы сможете обеспечить стабильную работу пользователей.

← На главную