Почему тонкий клиент 1С потребляет 100% ресурсов процессора на терминальном сервере и как это исправить?

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

Ситуация, когда процессы тонкого клиента 1cv8c.exe начинают потреблять значительные ресурсы процессора (ЦП) на терминальном сервере, даже если пользователи не проявляют активности, является распространенной проблемой для платформы 1С:Предприятие версий 8.3.23 и выше. Разберем детально причины этого «магического» поведения и проанализируем шаги, которые помогут локализовать и устранить проблему.

Анализируем симптомы: «Ритмичная» нагрузка и бездействие пользователей

Проанализируем типичную ситуацию: на сервере работает около 10 пользователей через RDP. В какой-то момент загрузка ЦП взлетает до 100%, при этом диспетчер задач показывает, что ресурсы потребляют 4-5 процессов 1cv8c.exe. Самое странное — пользователи в это время могут даже не находиться за компьютерами, а в Журнале регистрации 1С не фиксируется никаких фоновых заданий или активных действий.

Важной зацепкой является синхронность нагрузки: процессы начинают «троттлить» одновременно, часто с определенной периодичностью (например, каждые 10 секунд). Выясним причину такого поведения, рассмотрев наиболее вероятные факторы.

Решение 1: Устранение бага «бесконечного цикла» при разрыве соединения

Одной из главных причин, подтвержденных практикой, является поведение тонкого клиента при кратковременной потере связи с сервером 1С. Рассмотрим, как это происходит:

  1. Происходит микроразрыв сети или плановая перезагрузка сервера приложений 1С (как в сообщении №50).
  2. Тонкий клиент, запущенный в терминальной сессии, теряет контекст соединения.
  3. Вместо штатного завершения или вывода ошибки, клиент входит в бесконечный цикл опроса состояния, пытаясь восстановить сессию или обновить форму.

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

Решение 2: Настройка графического ускорения в RDP

Современные версии 1С (начиная с 8.3.23) активно используют аппаратное ускорение для отрисовки интерфейса. В среде удаленных рабочих столов (RDP) это может привести к конфликтам. Проанализируем ситуацию: если система пытается использовать драйвер WDDM для отрисовки графики 1С, а аппаратных ресурсов видеокарты не хватает (или она виртуализирована некорректно), нагрузка перекладывается на ЦП.

Рассмотрим шаги по оптимизации графики:

Решение 3: Оптимизация динамических списков и автообновления

Даже если форма кажется «примитивной», она может генерировать скрытую нагрузку. Разберем по шагам, что нужно проверить в конфигурации или настройках пользователя:

  1. Период автообновления: Проверим свойства динамических списков, например, список счетов или заказов. Если установлено свойство ПериодАвтообновления, клиент будет регулярно «дергать» сервер. В условиях терминала это умножается на количество пользователей.
  2. Сложные отборы: Пользователи могут самостоятельно настроить «Изменить форму», добавив условное оформление или сложные фильтры. Клиентская часть 1С будет пересчитывать эти правила при каждом мерцании экрана.
  3. Обработчики ожидания: Проанализируем код модулей управляемого приложения и модулей форм на наличие функций ПодключитьОбработчикОжидания(). Если обработчик не отключается корректно, он может продолжать работу «вхолостую».

Решение 4: Использование Технологического журнала для глубокой диагностики и перенос логов в ClickHouse

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

Создадим файл logcfg.xml в папке настроек 1С (обычно C:\Program Files\1cv8\conf) со следующим содержанием:


<config xmlns="http://v8.1c.ru/7.4/config/logcfg">
  <log location="C:\LOGS\1C_CLIENT" history="2">
    <event>
      <eq property="Name" value="EXCP"/>
    </event>
    <event>
      <eq property="Name" value="CLSTR"/>
    </event>
    <property name="All"/>
  </log>
</config>

Проанализируем полученные логи после очередного скачка нагрузки. Если в логах превалируют события EXCP, связанные с сетевыми именами или компонентами gdiplus.dll, это подтвердит теорию о проблемах с графикой или сетевым стеком.

Решение 5: Проверка компонента WebView2 и кэша

Современная 1С часто использует встроенные браузерные движки для отображения новостей и баннеров. Посмотрим на этот аспект:

Важный момент: Как отмечено в сообщении №50, перезагрузка сервера 1С часто провоцирует этот баг у «старых» сессий. Рекомендуется настроить регламентное завершение спящих и неактивных сеансов на стороне сервера 1С, чтобы предотвратить их переход в состояние «зацикливания».

← На главную