Работа 1С:Предприятия через веб-сервер Apache — это популярное решение, особенно для обеспечения доступа удаленным сотрудникам или работы через браузер. Однако часто администраторы сталкиваются с ситуацией, когда при увеличении количества активных сессий (обычно более 4–5 пользователей) система начинает «тупить» или вовсе перестает отвечать. Рассмотрим подробно, почему это происходит и как оптимизировать работу связки 1С и Apache.
Проанализируем ситуацию, описанную пользователем: база файловая, работает через Apache. В файловом варианте работы веб-сервер выступает в роли «прослойки». Когда несколько пользователей подключаются через веб-клиент или тонкий клиент по HTTP, все их запросы обрабатываются процессом Apache, который обращается к единственному файлу базы данных 1Cv8.1CD.
Выясним причину падения скорости: в файловом режиме при записи данных или выполнении тяжелых запросов срабатывают транзакционные блокировки. Если один пользователь запустил формирование отчета на СКД, Apache может заблокировать доступ к файлу базы для остальных потоков. Чем больше пользователей, тем выше очередь ожидания (CPU Wait) и тем медленнее отклик.
Как отмечают участники обсуждения, одним из первых шагов должна стать проверка разрядности установленного ПО. Разберем, почему это критично:
Для проверки загруженного модуля в файле httpd.conf найдите строку подключения расширения 1С. Для версии 2.4 она должна выглядеть примерно так:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.XX.XXXX/bin/wsap24.dll"
Убедитесь, что путь ведет именно в Program Files (для x64), а не в Program Files (x86).
В операционной системе Windows Apache использует модуль mpm_winnt. По умолчанию он настроен на среднюю нагрузку, которая не всегда подходит для специфики 1С. Проанализируем параметры, которые стоит изменить в файле httpd.conf (или в подключаемом extra/httpd-mpm.conf):
ThreadsPerChild: Этот параметр определяет количество одновременно обрабатываемых потоков. Если пользователей много, стандартного значения (обычно 64 или 150) может не хватить. Рассмотрим пример настройки для стабильной работы:
<IfModule mpm_winnt_module>
ThreadsPerChild 250
MaxConnectionsPerChild 3000
</IfModule>
Установка MaxConnectionsPerChild в значение, отличное от нуля, позволяет Apache периодически перезапускать рабочие процессы. Это помогает бороться с утечками памяти, которые могут возникать в модуле 1С при длительной работе без перезагрузки службы.
Часто «подвисания» интерфейса связаны с тем, что веб-сервер держит открытыми старые TCP-соединения, не позволяя новым пользователям быстро подключиться. Разберем настройки секции Keep-Alive:
2 или 3 секунды. Это позволит Apache быстро разрывать неактивные соединения и освобождать потоки для других пользователей.Для файловой базы 1С работа через Apache создает колоссальную нагрузку на дисковую подсистему. Если в этот момент антивирус пытается сканировать файл 1Cv8.1CD или временные файлы Apache, работа практически парализуется.
Что нужно добавить в исключения:
bin платформы 1С.C:\Windows\Temp или LocalSystem temp).Проанализируем ситуацию с правами: Apache по умолчанию запускается от имени учетной записи SYSTEM. Если база находится в сетевой папке или в каталоге с ограниченными правами, начинаются задержки при чтении/записи.
Рассмотрим лучший вариант: создать в Windows отдельного пользователя (например, usr_apache), дать ему полные права на папку с базой и папку с публикацией, и запустить службу Apache от имени этого пользователя. Это исключит большинство конфликтов доступа, особенно в части блокировок файлов *.lck.
Как показал опыт автора темы, это самое радикальное и эффективное решение. Если количество пользователей превышает 5–10 человек, и они активно работают в базе, никакие настройки Apache не спасут от фундаментального ограничения файлового режима — блокировки всей базы при записи.
При переходе на SQL (PostgreSQL, MS SQL Server) за работу с данными отвечает сервер 1С, а Apache лишь транслирует запросы. Это позволяет:
Если ваша 1С на Apache начала «тупить», выполните следующие шаги по порядку:
ThreadsPerChild и KeepAliveTimeout в конфигурации Apache.Помните, что Apache — это мощный инструмент, но он требует грамотной настройки под специфику 1С, особенно в части управления потоками и временем жизни соединений.