Принято считать, что для работы более 10 пользователей в программах семейства «1С:Предприятие 8.3» необходимо переходить на клиент-серверный вариант (SQL). Однако на практике системные администраторы часто сталкиваются с ситуациями, когда бюджет ограничен, а текущая инфраструктура должна выдавать максимум производительности. Рассмотрим подробнее, как ведет себя связка 1С + Apache + Linux при работе с тяжелыми типовыми конфигурациями, такими как «Бухгалтерия предприятия 3.0» (БП) и «Зарплата и управление персоналом 3.0» (ЗиУП).
В этой статье мы проанализируем реальный опыт эксплуатации таких систем, выясним технические причины их стабильности на Linux и разберем, как обойти типичные ограничения файлового режима.
Разберем ситуацию, которая часто встречается в среднем бизнесе. Имеется сервер на базе процессора i5-6400, 32 Гб оперативной памяти и SSD-накопитель под управлением Ubuntu. На этой конфигурации одновременно работают более 15 активных пользователей в четырех «боевых» базах. Одна из баз (БП 3.0) имеет объем около 8 Гб и ведется на протяжении нескольких лет.
Почему такая схема оказывается жизнеспособной, несмотря на рекомендации переходить на PostgreSQL или MS SQL Server? Основная причина кроется в использовании веб-сервера Apache. В отличие от прямого доступа к файлу .1CD через общую сетевую папку (SMB/Samba), веб-сервер берет на себя роль посредника. Проанализируем преимущества этого подхода:
Тонкий клиент или обычный браузер (например, Google Chrome), что минимизирует передачу лишних данных по сети..1CD на чтение.Часто высказывается опасение, что файловая база «умрет» при достижении размера 4 Гб. Выясним причину этого мифа. В старых версиях платформы существовало ограничение на размер одной внутренней таблицы (например, таблицы движений или итогов) внутри файла базы данных — не более 4 Гб. Современные версии 1С v8.3 позволяют обходить этот лимит.
Если вы планируете эксплуатировать крупную базу в файловом режиме через Apache, выполните следующие действия при создании или реструктуризации базы:
Установите увеличенный размер страницы данных. Это делается с помощью утилиты cnvdbutl или при загрузке базы из файла .dt. Рассмотрим пример выбора параметров:
Важно: Увеличение размера страницы повышает стабильность крупных баз (как в нашем примере с БП 3.0 на 8 Гб), но может незначительно увеличить объем файла на диске.
Для корректной работы 1С под нагрузкой необходимо правильно настроить модуль многопроцессорной обработки (MPM) в Apache. Проанализируем, какой модуль выбрать.
Чаще всего для расширения 1С (wsap24.so) используется режим Prefork. В этом режиме под каждое подключение Apache создает отдельный процесс. Это гарантирует, что если один сеанс пользователя «зависнет» или вызовет ошибку в расширении 1С, остальные пользователи продолжат работу. Однако это требует значительного объема RAM.
Рассмотрим ключевые параметры в конфигурационном файле Apache (обычно /etc/apache2/mods-available/mpm_prefork.conf):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
Параметр MaxRequestWorkers определяет, сколько одновременных запросов сможет обработать сервер. Если у вас 15 пользователей, но база БП 3.0 активно использует РегламентныеЗадания (фоновые процессы), фактическое количество соединений может достигать 25–30. Убедитесь, что лимит установлен с запасом.
В современных конфигурациях («Бухгалтерия 3.0», «ЗУП 3.0») в фоновом режиме постоянно выполняются задачи: проверка контрагентов, загрузка курсов валют, классификаторов и т.д. В файловом варианте через веб-сервер каждое такое задание инициирует полноценный сеанс.
Проанализируем ситуацию с потреблением ресурсов: процессы Apache под Linux имеют свойство постепенно накапливать занимаемую оперативную память из-за особенностей работы расширения 1С. Чтобы сервер не ушел в критическое состояние и не сработал OOM Killer (механизм Linux, убивающий самые «прожорливые» процессы при нехватке памяти), рекомендуется настроить планировщик задач cron на мягкий перезапуск Apache в ночное время:
0 4 * * * /usr/sbin/apache2ctl graceful
Команда graceful позволяет Apache дождаться завершения текущих запросов и перезапустить рабочие процессы, очищая память, не прерывая работу ночных фоновых заданий жестко.
Почему пользователи «не жалуются» на медленную работу в файловом режиме на Linux? Огромную роль играет выбор файловой системы. Использование Ext4 или XFS на Linux обеспечивает более высокую скорость работы с блокировками файлов по сравнению с NTFS в Windows.
При работе 15+ пользователей критически важно использовать SSD (лучше NVMe). Основным узким местом файловой 1С является конкуренция за запись в файл .1CD. Когда один процесс пишет данные, остальные ждут освобождения блокировки. SSD с высокими показателями IOPS (количества операций ввода-вывода в секунду) минимизирует это время ожидания.
Выясним итоговый «потолок» данной архитектуры. Исходя из технических данных и опыта сообщества, связка 1С + Apache + Linux в файловом режиме способна стабильно обслуживать:
ERP или КА 2, но с жестким контролем фоновых заданий.Важный совет: Если вы замечаете, что документы начали проводиться слишком долго (более 3-5 секунд), это сигнал о том, что количество блокировок стало критическим. В этом случае, даже если сервер по ресурсам (процессор, память) свободен, необходимо переходить на клиент-серверный вариант с использованием PostgreSQL, так как только SQL-сервер обеспечивает конкурентную запись данных на уровне строк таблиц, а не всего файла целиком.