При эксплуатации серверных решений 1С:Предприятие на ОС Linux системные администраторы часто сталкиваются с проблемой избыточного потребления оперативной памяти 64-битной версией сервера (процессами rphost). В условиях ограниченных ресурсов (например, при наличии всего 8 ГБ ОЗУ) 64-битный сервер 1С может потреблять практически всю доступную память, что приводит к уходу системы в глубокий своп и резкому падению производительности. В то же время 32-битная версия сервера 1С работает с памятью значительно скромнее, но возникает архитектурный конфликт: стандартные 64-битные веб-серверы (Apache) не могут напрямую загрузить 32-битные модули расширения 1С.
В данной статье мы подробно разберем, как реализовать гибридную схему работы, сохранив преимущества 64-битной операционной системы и экономичность 32-битного сервера 1С.
Прежде чем переходить к настройке, проанализируем ситуацию. В 64-битных системах адресное пространство практически не ограничено, и платформа 1С использует это для агрессивного кэширования метаданных и временных таблиц. Процесс rphost версии x64 сразу после старта может занимать 4–5 ГБ ОЗУ, в то время как версия x32 в аналогичных условиях потребляет менее 1 ГБ. Основная сложность заключается в публикации баз: веб-сервер Apache 2.4 (x64), установленный из стандартных репозиториев современных дистрибутивов (Ubuntu 16.04/18.04/20.04), требует наличия 64-битной библиотеки wsap24.so. Попытка подключить 32-битный модуль к 64-битному процессу Apache приведет к ошибке сегментирования или отказу в запуске службы.
Рассмотрим наиболее изящный способ, который позволяет запустить 32-битный сервер приложений 1С, но использовать 64-битные модули для публикации на Apache. Основная идея заключается в том, что модулю расширения веб-сервера неважно, какой разрядности сервер 1С (кластер), так как общение между ними идет по протоколу TCP/IP. Главное условие — полное совпадение версий (сборки) платформы.
Разберем процесс по шагам:
8.3.16.1224).
cp -r /opt/1C/v8.3/x86_64 /opt/1C/v8.3/x86_64_backup
Это нужно сделать, так как при удалении пакета x64 система может очистить каталог /opt/1C.x86_64 обратно в /opt/1C/v8.3/.srvc1cv83), и набор 64-битных библиотек в папке x86_64. При публикации базы через утилиту webinst или вручную в конфигурационном файле Apache (httpd.conf или apache2.conf) указываем путь к 64-битному модулю:
LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap24.so"
www-data), имеет права на чтение файлов в каталоге /opt/1C/v8.3/x86_64/.Выясним причину, почему это работает: Apache успешно загружает 64-битный wsap24.so, так как их архитектуры совпадают. В свою очередь, этот модуль обращается к 32-битному серверу 1С по локальному адресу 127.0.0.1 и портам 1540/1541, используя стандартные механизмы межпроцессного взаимодействия.
Если вы не хотите «засорять» основную систему смешиванием библиотек разных архитектур, проанализируем вариант с Docker. Это современный и безопасный подход, позволяющий изолировать окружение веб-сервера от окружения сервера приложений.
Рассмотрим алгоритм настройки:
multiarch (команда dpkg --add-architecture i386).i386/httpd или i386/ubuntu)..vrd) указываем адрес хостовой машины вместо localhost, чтобы Apache из контейнера мог достучаться до ragent на хосте.Посмотрим на пример настройки SSL при таком подходе. Чтобы не мучиться с сертификатами внутри контейнера, рекомендуется использовать Nginx x64 на хостовой машине в качестве обратного прокси (Reverse Proxy). Nginx будет принимать HTTPS-трафик, терминировать SSL (например, от Let's Encrypt), и перенаправлять чистый HTTP-трафик на Apache (в контейнере или локальный x32).
В некоторых версиях платформы (особенно 8.3.15 и выше) простой подмены файла wsap24.so может быть недостаточно. Проанализируем ситуацию: новый модуль расширения имеет зависимости от других библиотек платформы (libcore8.so, libmw8.so и др.).
Если при попытке зайти через веб-клиент вы получаете ошибку "1C:Enterprise 8 application error: Error loading component pack", выполните следующие действия:
/opt/1C/v8.3/x86_64/ присутствуют абсолютно все файлы из дистрибутива x64, а не только один .so файл.ldd /opt/1C/v8.3/x86_64/wsap24.so. Все строки в выводе должны содержать пути к найденным библиотекам.haspd.Мы рассмотрели, что «подружить» разные архитектуры вполне реально. Наиболее стабильным и простым в реализации является первый метод (гибридная папка /opt/1C). Он позволяет сэкономить несколько гигабайт оперативной памяти, что критично для серверов с объемом ОЗУ 8 ГБ и ниже.
Важный совет: не забудьте настроить ежедневный перезапуск рабочих процессов сервера 1С или всей службы через cron. Даже 32-битный сервер со временем может накапливать фрагментацию памяти, и превентивный рестарт в ночное время обеспечит стабильную работу системы в течение всего рабочего дня.