Рассмотрим достаточно специфичную, но неприятную ситуацию: вы настроили публикацию одной файловой базы 1С через веб-сервер Apache, и все работает стабильно. Однако, как только вы публикуете вторую (или последующую) базу, клиенты 1С начинают аварийно завершать работу каждые 15-20 минут. Эта проблема особенно актуальна для систем, где использование стандартного IIS затруднено, например, на Windows Server 2012 R2 Essentials. Чтобы избежать подобных сложностей в будущем, стоит изучить, как публиковать базы с комфортом, используя специализированные инструменты управления публикациями.
Проанализируем возможные причины такого поведения и разберем по шагам, как диагностировать и исправить эту проблему.
Это наиболее вероятная причина нестабильности. Чтобы понять, почему так происходит, нужно разобраться, как устроен механизм публикации файловых баз через веб-сервер.
Для каждого активного подключения к опубликованной базе на сервере запускается специальный процесс — wsphost.exe. Этот процесс "захватывает" файл базы данных (1Cv8.1CD) и загружает значительную его часть в оперативную память для обработки запросов от клиента.
wsphost.exe, может переиспользоваться для обслуживания сеансов других пользователей. Это экономит оперативную память.wsphost.exe. Они не могут совместно использовать данные в памяти. В результате потребление оперативной памяти растет нелинейно и очень быстро. Если на сервере недостаточно свободной RAM, система начинает активно использовать файл подкачки на диске. Это резко замедляет все операции, и процессы 1С могут "отваливаться" по таймауту, что и выглядит как аварийное завершение на стороне клиента.Как проверить:
В момент, когда пользователи подключены к обеим базам и начинаются сбои, проведите замер производительности контура 1С и поиск узких мест. Откройте на сервере "Диспетчер задач" или "Монитор ресурсов" и обратите внимание на следующие показатели:
wsphost.exe: Вы увидите несколько таких процессов.wsphost.exe: Оцените, сколько суммарно они занимают.Если вы видите, что память загружена на 90-100% и идет активная работа с диском (файл подкачки), то вы нашли корень проблемы.
Веб-сервер Apache обрабатывает входящие запросы в несколько потоков. У каждого потока есть выделенная область памяти, называемая стеком. Модуль публикации 1С (wsap22.dll или wsap24.dll) является довольно требовательным к размеру этого стека, особенно в 64-разрядных версиях. Это критично, если вы планируете сложную публикацию HTTP сервиса с использованием SSL сертификата.
По умолчанию, значение размера стека в Apache может быть недостаточным. Это приводит к переполнению стека и необъяснимым "падениям" рабочего процесса Apache, что для пользователя 1С выглядит как разрыв соединения и аварийное завершение программы.
Как исправить:
httpd.conf и находится в папке conf в директории установки Apache (например, C:\Apache24\conf\httpd.conf).ThreadStackSize. Если ее нет, просто добавьте ее в конец файла или в секцию <IfModule mpm_winnt_module>.Строка в файле конфигурации должна выглядеть так:
ThreadStackSize 8388608
После сохранения изменений в файле httpd.conf обязательно перезапустите службу Apache, чтобы новые настройки применились.
Для стабильной работы связки "1С + Apache" существует золотое правило: разрядность веб-сервера Apache и разрядность установленной на сервере платформы 1С:Предприятие должны совпадать.
Как проверить и исправить:
Убедитесь, что версии установленных на сервере Apache и платформы 1С:Предприятие имеют одинаковую разрядность (x86 или x64). Если они разные, удалите их и установите заново, придерживаясь единой разрядности. Для серверных систем предпочтительной является x64.
Помимо основных причин, есть несколько общих рекомендаций, которые помогут повысить стабильность работы сервера.
http://localhost/base2). Если клиент будет вылетать и на сервере, это однозначно указывает на серверную проблему (память, настройки Apache). Если же на сервере все работает стабильно, а вылетают только удаленные клиенты, проблема может быть связана с сетью.Важно понимать, что публикация файловых баз через веб-сервер — это компромиссное решение, которое подходит для небольшого числа пользователей (1-3) и неинтенсивной работы.
Когда количество пользователей или баз данных растет, файловый режим становится узким местом системы. Вся нагрузка по обработке данных ложится на процессы wsphost.exe, которые интенсивно используют процессор, память и дисковую подсистему сервера. В клиент-серверном варианте эти функции берут на себя рабочие процессы кластера, для которых полезно настроить автоматический перезапуск процессов rphost.
Самым правильным и надежным решением для долгосрочной стабильной работы является переход на клиент-серверный вариант.
Это означает, что сами базы данных будут храниться и обрабатываться полноценной системой управления базами данных (СУБД), такой как MS SQL Server или бесплатный PostgreSQL. Веб-сервер в этом случае будет лишь передавать запросы от клиента к серверу 1С, который, в свою очередь, будет обращаться к СУБД. Нагрузка распределится, а потребление ресурсов на веб-сервере значительно снизится. анализировать SQL сервер глазами 1С-ника, что кардинально повысит стабильность и производительность всей системы.