Зависание тонкого клиента 1С, работающего через веб-сервер Apache, — это классическая проблема, с которой сталкиваются системные администраторы при публикации баз (особенно в файловом варианте). Характерный симптом: система работает стабильно некоторое время, затем на 3–5 минут «замирает» (интерфейс не реагирует, окно авторизации не появляется), после чего самостоятельно «оживает». Рассмотрим подробно, почему это происходит и как настроить стабильную работу связки 1С + Apache + Windows.
Прежде всего, разберем физику процесса. Если клиент «ждет» сервер, а потом оживает, это означает, что веб-сервер жив, но очередь запросов к модулю 1С (wsap24.dll) переполнена или заблокирована. Основными причинами являются:
Прежде чем менять настройки, нам нужно выяснить, где именно «застревает» пакет данных. Замер производительности контура 1С и поиск узких мест — это первый этап. Проделаем следующие шаги:
Fiddler на стороне клиента. Во время зависания проанализируем: уходят ли HTTP-запросы (POST/GET) к серверу и какой код ответа приходит. или антивирусе.EXCP (исключения) и длительные DBV8DBFull. Перенос логов технологического журнала в ClickHouse поможет детально проанализировать данные и понять, не заблокирована ли база на уровне СУБД или файлового доступа.error.log и access.log. Ищем ошибки типа worker address already in use или Parent: child process exited with status....Для стабильной работы 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 предотвращает перезапуск процесса, который мог бы вызвать кратковременное прерывание сессий.
Если зависания происходят каждые 5 минут, скорее всего, это работа РегламентныхЗаданий. В файловом варианте они могут парализовать веб-сервер. Рассмотрим два пути решения:
Путь А: Вынос заданий на отдельный экземпляр. Мы можем запустить отдельный сеанс 1С (тонкий или толстый клиент) на сервере с ключом /AllowExecuteScheduledJobs -Force. При этом в настройках публикации через Apache следует отключить выполнение регламентных заданий, чтобы они не пересекались с пользовательскими запросами.
Путь Б: Настройка файла публикации .vrd. Откроем файл default.vrd в каталоге публикации базы и проверим параметр poolSize. Установим его явно:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/MyBase"
ib="File="C:\Bases\MyBase";">
<ws poolSize="20" poolTimeout="60"/>
</point>
Это позволит 1С выделять больше ресурсов для одновременной обработки запросов к веб-сервисам и интерфейсу.
Часто причиной «фризов» становится работа функций сетевой карты и механизмов энергосбережения. Проанализируем и настроим ОС:
netsh int tcp set global chimney=disabled
netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global rss=disabled
httpd.conf заменим Listen 80 на Listen 0.0.0.0:80.C:\Windows\Temp существенно замедляет создание временных файлов 1С.Проанализируем работу защитного ПО. Модули «Веб-антивирус» перехватывают трафик порта 80, анализируют тяжелые XML-ответы от 1С и только потом отдают их клиенту. Это создает иллюзию зависания. Необходимо:
httpd.exe в исключения антивируса (доверенные программы)..1cd, .lgf, .lgp.Если после всех манипуляций Apache продолжает вести себя нестабильно (что иногда случается на специфических сборках Windows 10), рассмотрим переход на IIS (Internet Information Services). IIS является нативным компонентом Windows, лучше управляет пулами приложений и зачастую работает с 1С «из коробки» гораздо стабильнее в многопользовательском режиме. Многие администраторы отмечают, что проблемы с недостаточно памяти и сеансы не отключаются исчезают именно после миграции на IIS.
Подведем итог: стабильная работа 1С через Apache требует не только публикации базы, но и тонкой настройки лимитов потоков, отключения сетевых оптимизаций Windows и грамотного управления регламентными заданиями. Выполнив описанные шаги, мы превратим «висвнущую» систему в надежный рабочий инструмент.