При работе с платформой 1С:Предприятие 8.3.16 на операционных системах семейства Linux (в частности, Debian) администраторы часто сталкиваются с разрывом соединения в веб-клиенте. Ошибка сопровождается текстом: Connection error by reason: Error determining whether the client and the server processes belong to the same computer. Эта проблема особенно актуальна для конфигураций на управляемых формах, таких как 1С:Бухгалтерия 3.0 или 1С:Розница 2.
В этой статье мы подробно разберем, почему возникает эта ошибка, как работает механизм оптимизации локальных соединений и какие шаги необходимо предпринять для стабилизации работы сервера. Проблема комплексная: она затрагивает как баги конкретных релизов платформы, так и тонкие настройки веб-сервера Apache и сетевого стека Linux.
Для начала выясним причину такого поведения системы. Платформа 1С использует механизм оптимизации: если процесс веб-сервера (модуль расширения wsap24) и рабочий процесс сервера 1С (rphost) запущены на одной физической машине, система пытается использовать протокол Shared Memory (общая память) вместо TCP/IP. Это значительно ускоряет передачу данных.
Ошибка «Error determining...» сигнализирует о том, что платформа не смогла однозначно определить, являются ли процессы локальными по отношению друг к другу. В версии 8.3.16.1063 алгоритм этого определения оказался крайне нестабильным. Если механизмы идентификации дают сбой или сталкиваются с конфликтом прав доступа, соединение аварийно разрывается.
Проанализируем сетевую конфигурацию сервера. На Linux-системах алгоритм определения локальности процессов сильно завязан на разрешение имени хоста. Если hostname сервера разрешается некорректно, платформа выдает ошибку.
/etc/hosts. Имя вашего сервера должно быть четко сопоставлено с локальным адресом 127.0.0.1.FQDN.Пример правильной настройки в файле /etc/hosts:
127.0.0.1 localhost
127.0.1.1 имя_вашего_сервера
Также рассмотрим влияние протокола IPv6. В некоторых случаях платформа 1С некорректно сопоставляет адреса IPv4 и IPv6, что приводит к сбою проверки. Попробуем временно отключить IPv6 в настройках ядра, добавив в /etc/sysctl.conf следующие строки:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
После внесения изменений выполним команду sysctl -p для их применения.
Для работы через общую память 1С создает специальные объекты (файлы-сокеты и идентификаторы) в каталоге /tmp. Рассмотрим ситуацию, когда база данных была запущена или обновлена от имени суперпользователя (root), а Apache работает от имени стандартного пользователя (например, www-data).
Если в каталоге /tmp/1C остались файлы, созданные под другим пользователем, модуль Apache не сможет получить к ним доступ для проверки локальности процессов. Разберем порядок действий для исправления ситуации:
srv1cv83 и apache2.
rm -rf /tmp/1C/*
rm -rf /tmp/v8*
/home/usr1cv8/.1cv8). Владельцем должен быть пользователь usr1cv8 и группа grp1cv8.Важный нюанс: В релизе 8.3.16.1063 был замечен баг, при котором платформа «забывала» удалять PID-файлы после аварийной перезагрузки. Это блокирует новые попытки подключения с той же ошибкой определения хоста.
Многие системные администраторы пытаются применять советы для Windows (например, настройку mpm_winnt_module), однако на Debian это не применимо. Посмотрим на архитектуру Apache в Linux. Для стабильной работы 1С рекомендуется использовать модули mpm_worker или mpm_event вместо устаревшего mpm_prefork.
Особое внимание уделим параметру MaxConnectionsPerChild. Платформа 8.3.16 (особенно 1063) имеет склонность к утечкам памяти в процессе wsap24. Чтобы предотвратить падение Apache и ошибки детерминации процессов, установим лимит на количество соединений для одного дочернего процесса:
<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 2000
</IfModule>
Установка MaxConnectionsPerChild в значение около 2000–3000 заставит Apache перезапускать рабочие процессы до того, как накопленные ошибки памяти приведут к сбою механизма локальных соединений.
Проанализируем отзывы специалистов. Версия 8.3.16.1063 официально признана одной из самых «сырых». В ней зафиксировано огромное количество багов, связанных именно с работой веб-сервисов и взаимодействием с rphost.
Если после выполнения сетевых настроек ошибка сохраняется, выясним ситуацию с обновлением. Исправления для описанной проблемы (ошибка определения локального хоста) были внесены в более поздние сборки:
Рекомендуется выполнить обновление платформы до последнего актуального релиза в ветке 8.3.16 или перейти на 8.3.18+, так как 16-я ветка больше не поддерживается полноценно.
Иногда ошибка «Error determining...» лечится полной очисткой каталога сеансовых данных в папке кластера сервера 1С. Платформа может кэшировать информацию о топологии сети и идентификаторах процессов, которая становится неактуальной после перезагрузки сервера.
Рассмотрим алгоритм глубокой очистки:
/home/usr1cv8/.1cv8/1C/1cv8/reg_1541/).snccntx... (данные сеансов) и очищаем её. Внимание: это приведет к завершению всех активных сеансов, если они были зависшими.Для устранения ошибки в связке 1С 8.3.16 и Debian мы рекомендуем придерживаться следующего плана: сначала исключить проблемы прав доступа в /tmp и сетевого разрешения hostname, затем настроить лимиты в Apache для предотвращения утечек памяти, и в качестве финального (но самого надежного) шага — обновить платформу до стабильной сборки 8.3.16.1148 или выше.