Как устранить зависания 1С на Linux при использовании RDP и 100% загрузку ядра процессора?

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

Переход на импортозамещающие операционные системы на базе ядра Linux (такие как Astra Linux, Ubuntu или Debian) часто сопровождается техническими сложностями при реализации защищенной ИТ-инфраструктуры и организации терминального доступа. Одной из наиболее острых проблем является внезапное зависание сеанса 1С в режиме «толстого клиента» или при использовании обычных форм. В этот момент один из процессов начинает потреблять 100% ресурсов одного ядра процессора, окно программы становится серым и перестает реагировать на действия пользователя. Проанализируем причины этого явления и разберем по шагам методы администрирования и решения проблем.

Выясним причину: почему происходит «залипание» процесса?

Ситуация, когда одно ядро процессора загружено на 100%, указывает на бесконечный цикл (deadlock) — даже если проводилась автоматизированная установка 1С и СУБД — или зацикливание обработки какого-либо события в графической подсистеме. В контексте Linux и RDP это чаще всего связано с конфликтом между xRDP, графическим сервером X11 и движком отрисовки 1С. Основными триггерами проблемы выступают:

  1. Некорректная работа буфера обмена: Служба xrdp-chansrv пытается синхронизировать данные (особенно нетекстовые, например, скриншоты или HTML) между клиентом и сервером, что вызывает программный ступор 1С.
  2. Модули ядра для USB-проброса: Модуль vhci-hcd, отвечающий за работу с аппаратными ключами защиты через USB/IP, может конфликтовать с планировщиком задач.
  3. Особенности «обычных форм»: Старый движок отрисовки интерфейса 1С использует синхронные вызовы к X-серверу, которые плохо транслируются через RDP-протокол.

Шаг 1. Настройка модулей ядра и аппаратной защиты

Рассмотрим первоочередные меры, связанные с системными модулями. Часто 1С пытается обращаться к аппаратным ключам через виртуальные шины, что приводит к задержкам. Проверим наличие модуля vhci-hcd и попробуем его отключить, если вы используете программные лицензии или сервер лицензирования.

Проанализируем список загруженных модулей командой:

sudo lsmod | grep vhci

Если модуль найден, выполним его принудительную выгрузку:

sudo modprobe -r vhci-hcd

Чтобы модуль не загружался после перезагрузки, добавим его в «черный список». Создадим файл конфигурации:


sudo nano /etc/modprobe.d/blacklist-1c.conf
# Добавляем строку:
blacklist vhci-hcd

Шаг 2. Решение проблемы с буфером обмена в xRDP

Как показывает практика, большинство «мертвых» зависаний происходит в момент копирования данных. Если пользователь (независимо от того, использует он стандартный клиент или утилиту для управления RDP-подключениями) случайно скопировал картинку или сложный объект в буфер обмена на локальной машине, RDP-сессия на Linux может зависнуть. Разберем, как ограничить влияние буфера обмена.

Попробуем временно отключить буфер обмена в настройках xrdp.ini, чтобы подтвердить теорию. Отредактируем файл:

sudo nano /etc/xrdp/xrdp.ini

Найдем параметр allow_clipboard и установим его в значение false. Если после этого зависания прекратились, значит проблема в службе xrdp-chansrv. Для комфортной работы (если буфер все же нужен) рекомендуется перед каждым запуском 1С очищать буфер обмена или использовать только текстовый формат. В случае зависания можно попробовать «убить» только процесс обслуживания канала, не закрывая всю сессию:


ps aux | grep xrdp-chansrv
kill -9 [ID_процесса]

После этого 1С часто «отвисает» самостоятельно.

Шаг 3. Оптимизация графической подсистемы и шрифтов

Проанализируем ситуацию с отрисовкой окон. 1С на Linux крайне чувствительна к шрифтам. Если в системе отсутствуют стандартные шрифты Microsoft, движок обычных форм начинает бесконечно пересчитывать размеры элементов интерфейса (Layout Cycle), что и дает 100% нагрузку на ЦП.

Установим обязательный набор шрифтов:


sudo apt-get install ttf-mscorefonts-installer
sudo fc-cache -f -v

Далее настроим параметры запуска 1С. Нам необходимо принудительно отключить аппаратное ускорение отрисовки, которое в среде RDP работает некорректно. Откроем файл conf.cfg (обычно находится в /opt/1cv8/conf/ или /opt/1cv8/x86_64/conf/) и добавим строку:

DisableHardwareAcceleration=1

Также полезно принудительно запускать 1С с использованием бэкенда X11, минуя возможные конфликты с Wayland. Для этого отредактируем скрипт запуска или добавим переменную в профиль пользователя:


export GDK_BACKEND=x11
/opt/1cv8/x86_64/1cv8

Шаг 4. Переход на альтернативный протокол X2Go

Если стандартный RDP (xRDP) продолжает работать нестабильно с обычными формами 1С, рассмотрим переход на протокол NX через приложение X2Go. В отличие от RDP, который является «надстройкой» над Windows-логикой, X2Go изначально спроектирован для передачи графики X11 по сети.

Преимущества X2Go для 1С:

Для установки на сервер Astra Linux выполним:

sudo apt-get install x2goserver x2goserver-xsession

На клиентские машины (Windows или Linux) необходимо установить X2Go Client. По отзывам многих администраторов, этот шаг полностью снимает проблему зависаний обычных форм.

Шаг 5. Тонкая настройка X-сервера (BackingStore)

Чтобы избежать появления «серых пятен» вместо окон 1С, проанализируем настройки X-сервера. Нам нужно включить функцию BackingStore, которая заставляет сервер сохранять содержимое перекрытых окон в памяти.

Создадим или отредактируем файл /etc/X11/xorg.conf (или соответствующий конфиг в xorg.conf.d/):


Section "Device"
    Identifier "vnc"
    Driver "vesa"
EndSection

Section "Screen"
    Identifier "Default Screen"
    Device "vnc"
    Option "BackingStore" "True"
EndSection

Итоги и рекомендации

Подводя итог, отметим, что связка Linux + RDP + Обычные формы 1С является технически сложной и требует тщательной настройки. Если ваша конфигурация позволяет, рассмотрите возможность перехода на управляемые формы (например, обновление БГУ с 1.0 на 2.0). Управляемые формы работают через «Тонкий клиент», который лишен большинства описанных проблем с графическим выводом. Если же работа в старой конфигурации неизбежна, использование X2Go и правильная настройка mscorefonts являются ключом к стабильной работе системы.

← На главную