Почему не запускается веб-клиент 1С в браузере и виснет на заставке

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

В процессе эксплуатации системы 1С:Предприятие 8.3 в связке с веб-сервером Apache 2.2 часто возникает критическая ситуация: пользователи веб-клиента не могут войти в базу, бесконечно наблюдая заставку с логотипом. При этом тонкие клиенты могут продолжать работу, а перезапуск служб дает лишь временный эффект. Проанализируем причины такого поведения и разберем по шагам методы диагностики и решения проблемы.

Разбор симптомов и первичная диагностика

Рассмотрим типичную ситуацию: на сервере развернута платформа 8.3.10.3034, используется веб-сервер Apache 2.2. В системе работают более 100 активных пользователей (50 через тонкий клиент и 50 через браузер). В определенный момент веб-клиенты перестают загружаться, при этом прямоугольники индикатора загрузки внизу заставки не появляются. Через несколько минут ожидания браузер выдает ошибку о временном сбое интернет-соединения.

Выясним причину такого поведения. Отсутствие индикаторов загрузки под логотипом 1С говорит о том, что клиентское приложение (скрипты веб-клиента) загрузилось в браузер, но не может инициировать сеанс на стороне сервера 1С. Основными узкими местами здесь являются:

  1. Механизм распределения клиентских лицензий.
  2. Лимиты соединений в конфигурации веб-сервера Apache.
  3. Очередь запросов в пуле соединений модуля расширения 1С.
  4. Проблемы с сетевыми протоколами (IPv4/IPv6).

Анализ проблемы лицензирования веб-клиента

Как показывает практика, в большинстве случаев «вечное» зависание на заставке связано именно с лицензиями. Разберем подробнее, как веб-клиент получает лицензию. В отличие от тонкого клиента, который может сам «дотянуться» до ключа HASP в сети, веб-клиент всегда получает лицензию либо от сервера 1С, либо от модуля расширения веб-сервера.

Проанализируем настройки публикации. Откроем файл default.vrd, который находится в каталоге публикации базы. Важнейшим параметром здесь является возможность выдачи лицензий сервером. Если сервер 1С не настроен на раздачу лицензий, а веб-сервер не видит доступных ключей, сессия будет висеть в ожидании свободного слота.

Для решения проблемы проверим следующие настройки в консоли администрирования серверов 1С:

  1. Зайдем в свойства информационной базы.
  2. Убедимся, что флаг «Разрешить выдачу лицензий сервером 1С» установлен в значение «Да».
  3. Проверим наличие свободных многопользовательских лицензий в консоли в разделе «Сеансы».

Если используются программные лицензии, важно помнить, что они привязываются к конкретному компьютеру. Если веб-сервер и сервер 1С разнесены на разные машины, лицензии должен выдавать именно тот компонент, который указан в настройках публикации.

Настройка параметров Apache для высокой нагрузки

Посмотрим на ситуацию со стороны веб-сервера. Версия Apache 2.2 имеет определенные ограничения по умолчанию, которые могут препятствовать нормальной работе 100+ пользователей. Проанализируем файл httpd.conf. Когда лимит одновременных подключений исчерпан, новые запросы от браузеров встают в очередь. Браузер при загрузке 1С выполняет десятки мелких HTTP-запросов (загрузка картинок, скриптов, стилей), и каждый такой запрос занимает поток.

Для оптимизации работы в ОС Windows найдем в httpd.conf секцию mpm_winnt_module и отредактируем параметры:


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

Параметр ThreadsPerChild определяет количество одновременных потоков. Если у вас 50 веб-пользователей, значение должно быть не менее 150-200, так как один пользователь генерирует несколько соединений. После изменения настроек обязательно выполним перезапуск службы Apache2.2.

Управление «фантомными» сессиями (Ghost Sessions)

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

Рассмотрим, как можно ускорить освобождение ресурсов. В файле default.vrd мы можем принудительно ограничить время жизни неактивной сессии. Добавим параметры в секцию point:


<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       base="/MyBase"
       ib="Srvr=MyServer;Ref=MyBase;">
    <ws>
        <point name="Common" alias="common.1cws"/>
    </ws>
    <sessionMaxAge>300</sessionMaxAge>
    <poolSize>20</poolSize>
</point>

Здесь параметр sessionMaxAge устанавливает время жизни сессии в секундах (в примере — 5 минут), а poolSize определяет количество одновременно поддерживаемых соединений в пуле к рабочему процессу сервера 1С. Увеличение poolSize помогает избежать блокировок при резком наплыве пользователей.

Конфликты разрядности и нехватка памяти

Проанализируем техническую сторону процесса httpd.exe. Если используется 32-битная версия Apache 2.2 (что является стандартом для старых инсталляций), она ограничена адресным пространством в 2 ГБ. Модуль расширения 1С работает внутри этого процесса. При большом количестве активных веб-сессий потребление памяти растет, и при достижении предела процесс начинает вести себя нестабильно: перестает принимать новые соединения или «зависает».

В этом случае рекомендуется:

Влияние протокола IPv6

Разберем еще одну неочевидную причину — влияние IPv6. В современных ОС Windows этот протокол включен по умолчанию и имеет приоритет над IPv4. Если в настройках Apache или в файле hosts указано имя сервера, обращение может сначала идти по адресу ::1 (IPv6), получать таймаут и только потом переключаться на 127.0.0.1. Это вызывает задержки, которые браузер воспринимает как обрыв связи.

Попробуем жестко ограничить Apache использованием IPv4. Для этого в файле httpd.conf заменим директиву Listen 80 на явное указание IP-адреса:

Listen 0.0.0.0:80

Также полезно проверить, что в настройках подключения к базе (в том же default.vrd) указан IP-адрес сервера 1С вместо его DNS-имени, что исключит задержки на этапе разрешения имен.

Оптимизация работы с аппаратными ключами HASP

Если ваша система использует аппаратные ключи защиты, загрузка может тормозиться на этапе поиска лицензии менеджером HASP LM. Веб-клиент очень чувствителен к времени отклика. Если в сети много широковещательного трафика, запрос лицензии может «потеряться».

Для ускорения процесса создадим файл nnhspro.ini в каталоге, где расположен модуль расширения веб-сервера (обычно это путь к бинарным файлам платформы 1С), и укажем там адрес сервера лицензирования напрямую:


[NH_COMMON]
NH_TCPIP = ENABLE

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10 ; IP вашего сервера с ключом
NH_TCPIP_METHOD = TCP

Подведем итоги

Проблема зависания веб-клиента на заставке в 90% случаев решается через правильную настройку выдачи лицензий и увеличение лимитов потоков веб-сервера. Если вы столкнулись с подобной ситуацией, первым делом проверьте количество занятых лицензий в консоли администрирования и убедитесь, что серверу 1С разрешено их выдавать. Затем проанализируйте настройки ThreadsPerChild в Apache и параметры пула соединений в файле default.vrd. Комплексный подход к настройке этих параметров обеспечит стабильную работу системы даже при высокой нагрузке.

← На главную