Как решить проблему с зависанием тонкого клиента 1С при работе через Apache?

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

Зависание тонкого клиента 1С, работающего через веб-сервер Apache, — это классическая проблема, с которой сталкиваются системные администраторы при публикации баз (особенно в файловом варианте). Характерный симптом: система работает стабильно некоторое время, затем на 3–5 минут «замирает» (интерфейс не реагирует, окно авторизации не появляется), после чего самостоятельно «оживает». Рассмотрим подробно, почему это происходит и как настроить стабильную работу связки 1С + Apache + Windows.

Проанализируем причины «циклического» зависания

Прежде всего, разберем физику процесса. Если клиент «ждет» сервер, а потом оживает, это означает, что веб-сервер жив, но очередь запросов к модулю 1С (wsap24.dll) переполнена или заблокирована. Основными причинами являются:

Шаг 1. Глубокая диагностика проблемы

Прежде чем менять настройки, нам нужно выяснить, где именно «застревает» пакет данных. Замер производительности контура 1С и поиск узких мест — это первый этап. Проделаем следующие шаги:

  1. Использование Fiddler: Установим Fiddler на стороне клиента. Во время зависания проанализируем: уходят ли HTTP-запросы (POST/GET) к серверу и какой код ответа приходит. или антивирусе.
  2. Технологический журнал 1С: Настроим сбор ТЖ на сервере. Нас интересуют события EXCP (исключения) и длительные DBV8DBFull. Перенос логов технологического журнала в ClickHouse поможет детально проанализировать данные и понять, не заблокирована ли база на уровне СУБД или файлового доступа.
  3. Логи Apache: Проверим файлы error.log и access.log. Ищем ошибки типа worker address already in use или Parent: child process exited with status....

Шаг 2. Оптимизация конфигурации Apache (httpd.conf)

Для стабильной работы 1С на Windows необходимо внести изменения в файл httpd.conf. Разберем наиболее критичные параметры:

Отключение фильтров приема: Windows-реализация Apache часто конфликтует с драйверами сетевых карт при использовании специфических оптимизаций. Добавим в конец файла конфигурации:


AcceptFilter http none
AcceptFilter https none
EnableSendfile off
EnableMMAP off

Настройка модуля MPM: По умолчанию Apache в Windows создает один дочерний процесс. Нам нужно убедиться, что количество потоков достаточно для всех клиентов. Найдем блок mpm_winnt_module и приведем его к виду:


<IfModule mpm_winnt_module>
    ThreadsPerChild 250
    MaxConnectionsPerChild 0
</IfModule>

Параметр ThreadsPerChild определяет, сколько одновременных соединений может обработать сервер. Значение MaxConnectionsPerChild 0 предотвращает перезапуск процесса, который мог бы вызвать кратковременное прерывание сессий.

Шаг 3. Управление регламентными заданиями

Если зависания происходят каждые 5 минут, скорее всего, это работа РегламентныхЗаданий. В файловом варианте они могут парализовать веб-сервер. Рассмотрим два пути решения:

Путь А: Вынос заданий на отдельный экземпляр. Мы можем запустить отдельный сеанс 1С (тонкий или толстый клиент) на сервере с ключом /AllowExecuteScheduledJobs -Force. При этом в настройках публикации через Apache следует отключить выполнение регламентных заданий, чтобы они не пересекались с пользовательскими запросами.

Путь Б: Настройка файла публикации .vrd. Откроем файл default.vrd в каталоге публикации базы и проверим параметр poolSize. Установим его явно:


<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       base="/MyBase"
       ib="File=&quot;C:\Bases\MyBase&quot;;">
    <ws poolSize="20" poolTimeout="60"/>
</point>

Это позволит 1С выделять больше ресурсов для одновременной обработки запросов к веб-сервисам и интерфейсу.

Шаг 4. Настройка сетевого стека и окружения Windows

Часто причиной «фризов» становится работа функций сетевой карты и механизмов энергосбережения. Проанализируем и настроим ОС:

  1. Отключение TCP Chimney Offload: Эта технология часто вызывает залипание пакетов в высоконагруженных HTTP-приложениях. Выполним в командной строке от имени администратора:
    
    netsh int tcp set global chimney=disabled
    netsh int tcp set global autotuninglevel=disabled
    netsh int tcp set global rss=disabled
    
  2. IPv6: Если ваша локальная сеть работает на IPv4, рекомендуется явно указать Apache слушать только этот протокол. В httpd.conf заменим Listen 80 на Listen 0.0.0.0:80.
  3. Временные файлы: Служба Apache работает под системной учетной записью. Очистим системные временные папки, так как накопление миллионов файлов в C:\Windows\Temp существенно замедляет создание временных файлов 1С.

Шаг 5. Работа с антивирусом и защитником

Проанализируем работу защитного ПО. Модули «Веб-антивирус» перехватывают трафик порта 80, анализируют тяжелые XML-ответы от 1С и только потом отдают их клиенту. Это создает иллюзию зависания. Необходимо:

Шаг 6. Использование альтернативного веб-сервера

Если после всех манипуляций Apache продолжает вести себя нестабильно (что иногда случается на специфических сборках Windows 10), рассмотрим переход на IIS (Internet Information Services). IIS является нативным компонентом Windows, лучше управляет пулами приложений и зачастую работает с 1С «из коробки» гораздо стабильнее в многопользовательском режиме. Многие администраторы отмечают, что проблемы с недостаточно памяти и сеансы не отключаются исчезают именно после миграции на IIS.

Подведем итог: стабильная работа 1С через Apache требует не только публикации базы, но и тонкой настройки лимитов потоков, отключения сетевых оптимизаций Windows и грамотного управления регламентными заданиями. Выполнив описанные шаги, мы превратим «висвнущую» систему в надежный рабочий инструмент.

← На главную