Как ускорить работу HTTP-сервисов 1С на веб-сервере Apache 2.4?

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

При работе с HTTP-сервисами в среде 1С:Предприятие системные администраторы и разработчики часто сталкиваются с проблемой высокого времени отклика — в таких ситуациях поможет комплексный анализ производительности 1С, серверов и СУБД. Даже если сама функция в модуле 1С выполняется за 1 мс, общее время ответа может составлять 300 мс и более. Основная часть этого времени тратится на накладные расходы: установку соединения веб-сервера с базой данных, инициализацию сеанса и проверку прав. В данной статье мы подробно разберем, как минимизировать эти задержки и настроить связку Apache и 1С на максимальную производительность, не забывая про альтернативные подходы к обработке HTTP-запросов в инфраструктуре 1С.

Анализ причин задержки и работа с пулом соединений

Рассмотрим ситуацию: время загрузки пустой страницы через Apache составляет около 60 мс, а вызов простейшего HTTP-сервиса 1С — 300 мс. Разница более чем в 200 мс указывает на то, что основное время уходит на инициализацию окружения 1С. Чтобы точно локализовать проблему, полезно провести комплексный замер производительности контура 1С и поиск узких мест — для этого есть инструмент сбора и анализа HTTP-запросов. Чтобы исправить задержки, нам необходимо выполнить грамотную оптимизацию файла .vrd и пула соединений в настройках публикации.

Разберем по шагам параметры в файле default.vrd, которые отвечают за повторное использование сеансов:

  1. poolSize — определяет максимальное количество соединений в пуле. Если запросов много, значение стоит увеличить (например, до 10-20).
  2. poolTimeout — время (в секундах), в течение которого свободное соединение удерживается в пуле.
  3. sessionLifeTime — время жизни сеанса. Установка этого параметра позволяет не завершать сеанс 1С сразу после ответа, а использовать его для следующего запроса.

Посмотрим на пример настройки секции httpServices в файле .vrd:


<httpServices>
    <service name="MyService" rootUrl="my_service" reuseSessions="autouse" sessionMaxAge="1200" poolSize="15" poolTimeout="1200" />
</httpServices>

Проанализируем параметр reuseSessions. Значение autouse позволяет платформе автоматически использовать существующие сеансы из пула, что кардинально снижает время на «холодный старт» подключения. Если вы применяете универсальные процедуры для быстрой организации API (в этом поможет конструктор API и интеграций для 1С), эффект от прогретого пула будет наиболее заметен, так как повторные запросы будут выполняться значительно быстрее (до 15-20 мс вместо 300 мс).

Оптимизация Apache 2.4 под Windows

Поскольку в нашем сценарии используется Windows Server, важно учитывать особенности работы модуля MPM (Multi-Processing Module) mpm_winnt. Правильная настройка модулей MPM и производительности Apache 2.4 под Windows поможет ускорить обработку сетевых пакетов. В некоторых случаях для корректной работы инфраструктуры требуется специфическая публикация HTTP-сервиса с использованием клиентского SSL-сертификата, что также накладывает свои требования к конфигурации веб-сервера.

Выясним причину возможных задержек на уровне сетевого взаимодействия. Параметр ThreadsPerChild определяет количество потоков для обработки запросов. Для нагруженных систем рекомендуется увеличивать его:


<IfModule mpm_winnt_module>
    ThreadsPerChild 150
    ThreadLimit 150
</IfModule>

Также проанализируем влияние DNS-запросов. Если Apache пытается определить имя хоста для каждого входящего IP-адреса, это создает задержку. Отключим эту функцию, установив HostnameLookups Off. Кроме того, рекомендуем заменить localhost на явный IP 127.0.0.1 в настройках подключения к базе, чтобы избежать лишних итераций по разрешению имен через IPv6.

Настройка SSL и KeepAlive

Если используется SSL-сертификат (HTTPS), значительное время тратится на «рукопожатие» (SSL Handshake). Чтобы не выполнять эту процедуру при каждом запросе, критически важна настройка SSL/TLS 1.3 и параметров KeepAlive. Это позволит держать TCP-соединение открытым для серии запросов.

Проверим и установим следующие параметры в httpd.conf:

  1. KeepAlive On — включение режима поддержания соединения.
  2. MaxKeepAliveRequests 0 — снимает ограничение на количество запросов в рамках одного соединения.
  3. KeepAliveTimeout 60 — время ожидания нового запроса перед закрытием соединения.

Использование протокола TLS 1.3 также даст существенный прирост скорости, так как он требует меньше циклов обмена данными для установки защищенного соединения по сравнению с TLS 1.2.

Особенности платформы 1С 8.3.25 и выше

Выясним, как версия платформы влияет на скорость. Начиная с релиза 8.3.25, разработчики 1С внесли технические изменения, которые затронули работу wsap24.dll. В новых версиях оптимизирована сериализация данных и механизм передачи управления от веб-сервера к рабочему процессу rphost. Чтобы убедиться, что база данных не является бутылочным горлышком при передаче данных, стоит провести анализ SQL-сервера глазами 1С-ника.

Как показывают тесты, на версии 8.3.25 при прогретом пуле соединений время отклика может составлять всего 11–17 мс. Поэтому одним из наиболее эффективных решений будет обновление платформы до актуального релиза.

Дополнительные факторы: антивирус и системные настройки

Проанализируем влияние системного окружения. Windows Server 2022 активно использует встроенный антивирус. Для исключения задержек при чтении библиотек 1С и временных файлов, необходимо добавить в исключения:

Также убедитесь, что схема электропитания сервера установлена в режим «Высокая производительность» (High Performance), что предотвращает снижение частоты процессора в моменты простоя между запросами.

Итоги настройки

Подводя итог, мы можем составить алгоритм ускорения HTTP-сервисов:

  1. Настраиваем poolSize и sessionLifeTime в .vrd для удержания активных сеансов 1С.
  2. Включаем KeepAlive в Apache для сохранения TCP/SSL соединений.
  3. Оптимизируем MPM-модуль Apache и отключаем лишние DNS-запросы.
  4. По возможности обновляемся на платформу 8.3.25+, где механизмы работы с веб-сервером переработаны.

Применение этих мер в комплексе позволяет сократить время отклика с 300-500 мс до комфортных 20-50 мс, что критически важно для интеграции между 1С без боли и страданий и стабильной работы мобильных приложений.

← На главную