Работа с платформой 1С:Предприятие в среде Linux (в частности, на дистрибутивах Ubuntu 14.04, 16.04 и выше) часто сопровождается специфической технической проблемой: клиентское приложение (тонкий или толстый клиент) неожиданно зависает через 1–3 минуты после старта. При этом один из потоков процесса начинает потреблять 100% ресурсов одного ядра процессора, интерфейс перестает откликаться, и пользователю приходится принудительно завершать работу программы.
В этой статье мы подробно проанализируем причины такого поведения, рассмотрим наиболее стабильные версии платформы для Linux и разберем по шагам методы оптимизации системы, которые помогут избежать «мертвых» зависаний.
Проанализируем ситуацию: почему на Windows те же версии платформы работают корректно, а на Linux возникают сложности? Основная причина кроется в механизмах отрисовки графического интерфейса. Начиная с версии 8.3.14, компания 1С начала активно переходить на использование библиотек GTK3 и обновленных движков WebKit для отображения форм. Это привело к ряду конфликтов:
libwx_gtk3u, что при определенных условиях вызывает бесконечный цикл обработки событий отрисовки.Опыт системных администраторов показывает, что не все релизы 1С одинаково стабильны под Linux. Если ваша конфигурация позволяет использовать более старые версии платформы, рекомендуется обратить внимание на следующие релизы, которые зарекомендовали себя как наиболее устойчивые:
Если обновление или откат платформы невозможны, проанализируем метод обхода проблемы через изменение режима отображения окон. Замечено, что большинство зависаний связано с отрисовкой форм в современном интерфейсе «Такси». Мы можем принудительно запустить 1С в многооконном интерфейсе, используя ключ запуска /isdi.
Для этого в настройках запуска информационной базы в поле «Дополнительные параметры запуска» укажем:
/isdi
Это включит режим, в котором каждое окно открывается отдельно. Хотя это выглядит менее современно, стабильность работы значительно повышается, так как исключаются сложные механизмы компоновки форм внутри единого окна «Такси».
Рассмотрим технические способы оптимизации работы движка WebKit, который 1С использует для отображения различных подсказок и веб-инструкций. Часто именно аппаратное ускорение WebKit приводит к зависанию всего процесса. Мы можем отключить его, создав скрипт запуска для 1С.
Создадим файл 1c_start.sh со следующим содержимым:
#!/bin/bash
export WEBKIT_DISABLE_COMPOSITING_MODE=1
export GDK_BACKEND=x11
/opt/1cv8/common/1cv8s
Разберем, что делают эти команды:
Иногда зависание происходит из-за того, что программа пытается вызвать звуковое уведомление или системное событие через библиотеку, которая отсутствует в системе или установлена некорректно. Выясним, установлены ли необходимые модули GTK.
Выполним в терминале установку модуля уведомлений (для 64-битных систем):
sudo apt-get install libcanberra-gtk-module
Если вы используете 32-битную версию клиента 1С на 64-битной системе, обязательно установите соответствующую архитектуру библиотеки:
sudo apt-get install libcanberra-gtk-module:i386
В некоторых случаях тонкий клиент зависает при попытке соединения с сервером 1С. Это происходит, если система пытается приоритетно использовать протокол IPv6, который некорректно настроен в локальной сети или на сервере. Программа ожидает ответа по таймауту, что блокирует графический интерфейс.
Проанализируем настройки ядра и временно отключим IPv6 для проверки:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Если после этого зависания прекратились, следует внести эти параметры в файл /etc/sysctl.conf на постоянной основе.
Если нативные клиенты для Linux в вашем окружении работают нестабильно, рассмотрим вариант запуска Windows-версии клиента через Wine. Как показывают практические тесты, даже 64-битные версии платформы 8.3.18+ под Wine могут работать стабильнее на Linux, чем «родные» сборки, так как Wine более предсказуемо эмулирует графическую подсистему Windows, под которую 1С оптимизирована изначально.
Резюмируем: Для достижения максимальной стабильности на Ubuntu рекомендуем начать с установки версии 8.3.16.1973 или 8.3.19.1665, применить переменную окружения WEBKIT_DISABLE_COMPOSITING_MODE=1 и, в случае сохранения проблем, перевести пользователей в режим /isdi. Такой комплексный подход позволяет минимизировать риски зависаний и обеспечить комфортную работу сотрудников.