Какую нагрузку выдерживает связка 1С и Apache на Linux при работе с файловыми базами?

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Принято считать, что для работы более 10 пользователей в программах семейства «1С:Предприятие 8.3» необходимо переходить на клиент-серверный вариант (SQL). Однако на практике системные администраторы часто сталкиваются с ситуациями, когда бюджет ограничен, а текущая инфраструктура должна выдавать максимум производительности. Рассмотрим подробнее, как ведет себя связка 1С + Apache + Linux при работе с тяжелыми типовыми конфигурациями, такими как «Бухгалтерия предприятия 3.0» (БП) и «Зарплата и управление персоналом 3.0» (ЗиУП).

В этой статье мы проанализируем реальный опыт эксплуатации таких систем, выясним технические причины их стабильности на Linux и разберем, как обойти типичные ограничения файлового режима.

Реальный кейс: 15+ пользователей на файловой базе

Разберем ситуацию, которая часто встречается в среднем бизнесе. Имеется сервер на базе процессора i5-6400, 32 Гб оперативной памяти и SSD-накопитель под управлением Ubuntu. На этой конфигурации одновременно работают более 15 активных пользователей в четырех «боевых» базах. Одна из баз (БП 3.0) имеет объем около 8 Гб и ведется на протяжении нескольких лет.

Почему такая схема оказывается жизнеспособной, несмотря на рекомендации переходить на PostgreSQL или MS SQL Server? Основная причина кроется в использовании веб-сервера Apache. В отличие от прямого доступа к файлу .1CD через общую сетевую папку (SMB/Samba), веб-сервер берет на себя роль посредника. Проанализируем преимущества этого подхода:

  1. Отсутствие сетевых блокировок файловой системы: При работе через Apache все операции с файлом базы данных выполняются локально процессом веб-сервера. Это исключает разрыв индексов и порчу базы из-за нестабильного сетевого соединения у клиента.
  2. Тонкий клиент и браузер: Пользователи работают через Тонкий клиент или обычный браузер (например, Google Chrome), что минимизирует передачу лишних данных по сети.
  3. Эффективное кэширование: Операционная система Linux эффективно использует свободную оперативную память для кэширования файловых операций (Page Cache), что значительно ускоряет работу с файлом .1CD на чтение.

Преодоление лимита 4 Гб в файловом режиме

Часто высказывается опасение, что файловая база «умрет» при достижении размера 4 Гб. Выясним причину этого мифа. В старых версиях платформы существовало ограничение на размер одной внутренней таблицы (например, таблицы движений или итогов) внутри файла базы данных — не более 4 Гб. Современные версии 1С v8.3 позволяют обходить этот лимит.

Если вы планируете эксплуатировать крупную базу в файловом режиме через Apache, выполните следующие действия при создании или реструктуризации базы:

Установите увеличенный размер страницы данных. Это делается с помощью утилиты cnvdbutl или при загрузке базы из файла .dt. Рассмотрим пример выбора параметров:

Важно: Увеличение размера страницы повышает стабильность крупных баз (как в нашем примере с БП 3.0 на 8 Гб), но может незначительно увеличить объем файла на диске.

Архитектурные особенности Apache на Linux

Для корректной работы 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 в файловом режиме способна стабильно обслуживать:

Важный совет: Если вы замечаете, что документы начали проводиться слишком долго (более 3-5 секунд), это сигнал о том, что количество блокировок стало критическим. В этом случае, даже если сервер по ресурсам (процессор, память) свободен, необходимо переходить на клиент-серверный вариант с использованием PostgreSQL, так как только SQL-сервер обеспечивает конкурентную запись данных на уровне строк таблиц, а не всего файла целиком.

← На главную