Запуск информационных баз 1С через веб-браузер — это удобный инструмент для организации удаленной работы сотрудников. Однако системные администраторы часто сталкиваются с неприятной проблемой: при подключении через веб-клиент (особенно через VPN) загрузка базы «зависает» на середине (на заставке или на 50% шкалы), в то время как тонкий клиент через тот же самый веб-сервер запускается без каких-либо нареканий.
Особенно остро эта проблема проявляется на «тяжелых» конфигурациях, таких как 1С:Бухгалтерия предприятия 3.0 (БП 3.0), при использовании веб-сервера Apache старых версий (например, Apache 2.2 на CentOS) и баз данных под управлением PostgreSQL.
В этой статье мы подробно разберем причины этой проблемы и пошагово рассмотрим пять эффективных методов её решения, которые помогут восстановить стабильную работу веб-клиента.
Это одна из самых распространенных внутренних проблем платформы 1С:Предприятие 8.3 (особенно версий 8.3.15–8.3.16) в клиент-серверном варианте работы.
Выясним причину: на стороне сервера 1С со временем забивается или повреждается кэш сеансов. Тонкий клиент часто может проигнорировать эти повреждения за счет локального кэширования на компьютере пользователя и оптимизированного протокола обмена. Веб-клиент в браузере при этом намертво зависает на этапе инициализации, даже не доходя до окна выбора пользователя или ввода пароля.
Для решения этой проблемы нам необходимо принудительно очистить сеансовый кэш на сервере CentOS. Разберем этот процесс по шагам:
systemctl stop srv1cv83
srv1cv8-8.3.16.1224).
cd /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/
snccntx. В этих папках и хранятся сеансовые данные. Полностью удалим их с помощью команды:
rm -rf snccntx*
1CV8Reg.lst), так как это приведет к потере настроек списка баз в кластере.
systemctl start srv1cv83
После запуска службы папки snccntx будут созданы автоматически с чистыми, неповрежденными индексами. Проверим запуск базы через браузер.
Конфигурация 1С:Бухгалтерия 3.0 содержит колоссальное количество модулей, стилей и скриптов. При первом запуске веб-клиента браузер должен скачать на локальный компьютер пользователя огромный массив статических JS-файлов, формирующих интерфейс программы.
Выясним причину: в веб-сервере Apache по умолчанию активированы механизмы оптимизации ядра ОС Linux для отправки файлов в сеть в обход пользовательского пространства — параметры EnableSendfile и EnableMMAP. При работе пользователей через VPN-туннели или при использовании виртуальных сетевых интерфейсов эти механизмы часто работают некорректно: файлы разметки и JS-скрипты передаются «битыми» или обрезаются. Тонкий клиент при этом работает отлично, так как весь интерфейс у него уже скомпилирован локально, а веб-клиент зависает на 50%, поскольку браузер не может до конца загрузить главный исполняемый скрипт интерфейса 1С.
Чтобы исправить это, нам нужно отключить данные оптимизации в конфигурационном файле Apache:
/etc/httpd/conf/httpd.conf) с помощью текстового редактора:
nano /etc/httpd/conf/httpd.conf
EnableMMAP и EnableSendfile. Если они закомментированы символом #, раскомментируем их. Если их нет, добавим в конец файла или внутрь глобальной секции конфигурации следующие строки:
EnableMMAP Off
EnableSendfile Off
Ctrl+O, затем Enter, для выхода — Ctrl+X).
httpd -t
Syntax OK, перезапустим веб-сервер для применения настроек:
systemctl restart httpd
Если пользователи работают с системой удаленно через VPN-соединение, то весь трафик проходит через дополнительный виртуальный сетевой интерфейс, который оборачивает пакеты данных в шифрованный туннель.
Выясним причину: шифрование VPN накладывает свои служебные заголовки, из-за чего максимальный размер полезного блока данных в сетевом пакете (MTU) снижается со стандартных 1500 байт до 1400–1450 байт. Если сетевое оборудование или брандмауэр на стороне сервера CentOS блокирует ICMP-сообщения (что мешает автоматическому определению размера пакета — Path MTU Discovery), веб-сервер будет пытаться отправить браузеру стандартные пакеты по 1500 байт. На входе в VPN-туннель эти пакеты будут отбрасываться без предупреждения. Веб-клиент при загрузке тяжелой статики БП 3.0 мгновенно зависнет.
Проанализируем ситуацию и настроим принудительное уменьшение размера TCP-сегментов (MSS Clamping) на стороне сервера CentOS:
ping <IP_адрес_сервера> -f -l 1400
iptables. Это заставит сервер принудительно согласовывать меньший размер пакетов при установлении TCP-соединений:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
OUTPUT:
iptables -t mangle -A OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Еще одно важное различие между работой тонкого клиента и веб-клиента кроется в механизме получения клиентских лицензий 1С.
Выясним причину: тонкий клиент умеет запрашивать лицензии локально (искать USB-ключи, установленные непосредственно в компьютер пользователя, или активированные на его ПК программные лицензии). Веб-клиент, работающий внутри веб-браузера, физически не имеет доступа к оборудованию клиентского компьютера. Он может получить лицензию только от сервера 1С или от модуля веб-сервера. Если в свойствах информационной базы отключена раздача лицензий сервером, тонкий клиент успешно запустится (найдя локальный ключ), а браузер бесконечно зависнет на этапе запуска без отображения ошибок.
Рассмотрим, как включить раздачу лицензий сервером:
Использование устаревших версий ПО — это критический фактор нестабильности ИТ-инфраструктуры. Версия Apache 2.2 является устаревшей и имеет серьезные архитектурные ограничения.
Выясним причину: если на сервере CentOS развернута 32-битная (x32) версия Apache 2.2, то один процесс веб-сервера физически не может адресовать более 2-3 ГБ оперативной памяти. Конфигурация 1С:Бухгалтерия 3.0 при работе нескольких пользователей через веб-клиент быстро исчерпывает этот лимит при инициализации тяжелых сессий. Процесс веб-сервера упирается в ограничение памяти, начинает аварийно завершаться или игнорировать новые запросы, переводя браузеры пользователей в режим бесконечного ожидания ответа.
Для долгосрочного и стабильного решения этой проблемы настоятельно рекомендуется выполнить обновление веб-сервера:
MPM Event или MPM Worker, что значительно снизит потребление оперативной памяти под нагрузкой по сравнению со старым режимом MPM Prefork.wsap24.so вместо устаревшего wsap22.so).Применение этих комплексных мер позволит полностью устранить зависания веб-клиента 1С:Предприятия при запуске баз через браузер, обеспечив быструю и комфортную работу удаленных пользователей.