Почему автономный сервер 1С работает быстрее Apache на Linux и как оптимизировать работу тонкого клиента

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

При развертывании инфраструктуры 1С на базе ОС Linux (например, CentOS) перед системными администраторами часто встает вопрос выбора способа публикации файловой базы для работы через тонкий клиент. Традиционно используются три основных варианта: доступ через сетевую папку Samba (толстый клиент), публикация через веб-сервер Apache и использование автономного сервера 1С. Практические тесты показывают существенную разницу в скорости работы этих решений. В данной статье мы разберем, почему специализированный автономный сервер выигрывает в производительности и что можно сделать для ускорения работы универсальных веб-серверов.

Сравнительный анализ вариантов подключения

Рассмотрим результаты эксперимента, в котором сравнивалась работа файловой базы в гигабитной сети на Linux-хосте:

  1. Толстый клиент через Samba: Самый медленный вариант. Основная проблема здесь заключается в реализации сетевых блокировок (oplocks) и огромных задержках при передаче больших объемов данных по протоколу SMB. Тонкий клиент в этом режиме практически не используется, так как вся логика выполняется на стороне клиента, что нагружает сеть.
  2. Тонкий клиент через Apache (mod_1c): Стандартный промышленный вариант. Работает стабильнее Samba, так как база данных обрабатывается локально на сервере процессом веб-сервера. Однако здесь появляется дополнительное звено в виде универсального HTTP-сервера.
  3. Тонкий клиент через автономный сервер 1С (ibsrv): Самый быстрый вариант. Это специализированное решение, где веб-сервер интегрирован непосредственно в движок платформы 1С.

Выясним причину, почему автономный сервер обходит Apache. Как справедливо замечено в обсуждении, система из двух звеньев (Клиент -> Автономный сервер) всегда будет работать быстрее системы из трех звеньев (Клиент -> Apache -> mod_1c -> Ядро 1С). Разберем это подробнее.

Архитектурные преимущества автономного сервера

Проанализируем ситуацию с точки зрения обработки запроса. Когда мы используем автономный сервер (процесс ibsrv), запрос от тонкого клиента попадает напрямую в среду исполнения 1С. В случае с Apache цепочка выглядит следующим образом: Сетевой стек -> Apache -> Анализ конфигурации (например, поиск .htaccess) -> Передача данных через интерфейс модулей в mod_1c -> Обработка внутри 1С.

Основные факторы превосходства автономного сервера:

Проблема файловых блокировок и кэширования

Посмотрим на работу с файлом базы данных 1Cv8.1CD. Автономный сервер «единолично» владеет доступом к файлу базы. Это позволяет ему более агрессивно использовать механизмы внутреннего кэширования данных. В случае с Apache, веб-сервер конкурирует за файловые дескрипторы и ресурсы системы с другими возможными модулями, что создает микрозадержки, критичные для высоконагруженных операций, таких как перепроведение документов.

Для объективной оценки производительности рекомендуется проводить тесты на конкретных операциях. Например, замерим время выполнения следующего кода при разных типах подключения:


// Пример замера производительности на сервере
НачалоЗамера = ТекущаяДатаСеанса();
Для Итерация = 1 По 100 Цикл
    ДокументОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
    ДокументОбъект.Дата = ТекущаяДатаСеанса();
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
КонецЗамера = ТекущаяДатаСеанса();
Сообщить("Время выполнения 100 проведений: " + (КонецЗамера - НачалоЗамера) + " сек.");

В ходе таких экспериментов автономный сервер обычно показывает преимущество в 15-20% по сравнению с Apache в стандартной конфигурации.

Как ускорить Apache для работы с 1С

Если по каким-то причинам использование автономного сервера невозможно (например, из-за ограничения в 3 бесплатных подключения или необходимости сложной настройки безопасности), можно попытаться оптимизировать Apache. Рассмотрим по шагам, что нужно сделать:

  1. Переход на MPM Event или Worker: Это позволит Apache обрабатывать запросы в потоках, а не в процессах, что приблизит его модель работы к автономному серверу. Однако будьте осторожны, если на этом же сервере работает PHP.
  2. Настройка KeepAlive: Для тонкого клиента 1С критически важно держать TCP-соединение открытым. Это избавляет систему от необходимости выполнять «трехстороннее рукопожатие» TCP при каждом мелком запросе формы или контекста.

    В конфиге httpd.conf установите:

    KeepAlive On
    KeepAliveTimeout 15
  3. Отключение лишних модулей: По умолчанию Apache загружает множество модулей (mod_autoindex, mod_status, mod_userdir), которые не нужны для работы 1С. Отключите их, чтобы облегчить процесс.
  4. Исключение проверок .htaccess: В настройках директории публикации 1С установите AllowOverride None. Это избавит Apache от необходимости сканировать файловую систему на наличие файлов конфигурации при каждом запросе.

Выводы и рекомендации

Выясним причину выбора того или иного решения. Автономный сервер 1С — это идеальный выбор для небольших рабочих групп или филиалов, где требуется максимальная скорость «из коробки» и простота развертывания. Его главным ограничением является лицензионная политика: для работы более чем 3 пользователей потребуется полноценная серверная лицензия (ПРОФ или КОРП).

Apache остается незаменимым в сценариях, где важна гибкость: настройка сложных правил SSL, фильтрация по IP, защита от DOS-атак или интеграция с другими веб-сервисами на одном порту. Хотя догнать автономный сервер по чистой скорости работы с файловой базой ему будет крайне сложно из-за «лишнего» архитектурного слоя, правильная настройка модулей управления процессами (MPM) позволяет минимизировать этот разрыв.

При выборе решения всегда ориентируйтесь на количество пользователей и сложность ваших бизнес-процессов. Для тяжелых отчетов и массового проведения документов на Linux-платформе автономный сервер на данный момент является наиболее производительным "легким" решением для файловых баз.

← На главную