Переход на импортозамещающие операционные системы на базе ядра Linux (такие как Astra Linux, Ubuntu или Debian) часто сопровождается техническими сложностями при реализации защищенной ИТ-инфраструктуры и организации терминального доступа. Одной из наиболее острых проблем является внезапное зависание сеанса 1С в режиме «толстого клиента» или при использовании обычных форм. В этот момент один из процессов начинает потреблять 100% ресурсов одного ядра процессора, окно программы становится серым и перестает реагировать на действия пользователя. Проанализируем причины этого явления и разберем по шагам методы администрирования и решения проблем.
Ситуация, когда одно ядро процессора загружено на 100%, указывает на бесконечный цикл (deadlock) — даже если проводилась автоматизированная установка 1С и СУБД — или зацикливание обработки какого-либо события в графической подсистеме. В контексте Linux и RDP это чаще всего связано с конфликтом между xRDP, графическим сервером X11 и движком отрисовки 1С. Основными триггерами проблемы выступают:
xrdp-chansrv пытается синхронизировать данные (особенно нетекстовые, например, скриншоты или HTML) между клиентом и сервером, что вызывает программный ступор 1С.vhci-hcd, отвечающий за работу с аппаратными ключами защиты через USB/IP, может конфликтовать с планировщиком задач.Рассмотрим первоочередные меры, связанные с системными модулями. Часто 1С пытается обращаться к аппаратным ключам через виртуальные шины, что приводит к задержкам. Проверим наличие модуля vhci-hcd и попробуем его отключить, если вы используете программные лицензии или сервер лицензирования.
Проанализируем список загруженных модулей командой:
sudo lsmod | grep vhci
Если модуль найден, выполним его принудительную выгрузку:
sudo modprobe -r vhci-hcd
Чтобы модуль не загружался после перезагрузки, добавим его в «черный список». Создадим файл конфигурации:
sudo nano /etc/modprobe.d/blacklist-1c.conf
# Добавляем строку:
blacklist vhci-hcd
Как показывает практика, большинство «мертвых» зависаний происходит в момент копирования данных. Если пользователь (независимо от того, использует он стандартный клиент или утилиту для управления 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С часто «отвисает» самостоятельно.
Проанализируем ситуацию с отрисовкой окон. 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
Если стандартный RDP (xRDP) продолжает работать нестабильно с обычными формами 1С, рассмотрим переход на протокол NX через приложение X2Go. В отличие от RDP, который является «надстройкой» над Windows-логикой, X2Go изначально спроектирован для передачи графики X11 по сети.
Преимущества X2Go для 1С:
Для установки на сервер Astra Linux выполним:
sudo apt-get install x2goserver x2goserver-xsession
На клиентские машины (Windows или Linux) необходимо установить X2Go Client. По отзывам многих администраторов, этот шаг полностью снимает проблему зависаний обычных форм.
Чтобы избежать появления «серых пятен» вместо окон 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 являются ключом к стабильной работе системы.