Почему зависают HTTP-запросы в 1С 8.3 при работе через веб-сервер и как это исправить?

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

При работе с HTTP-сервисами в среде 1С:Предприятие 8.3, особенно в файловом режиме, разработчики часто сталкиваются с труднообъяснимым поведением: запросы «зависают» на этапе создания сеанса. Проблема выглядит крайне специфично: запрос не доходит до программного кода (даже до первой строки метода), а в журнале регистрации фиксируются только события Сеанс.Аутентификации и Сеанс.Начало. При этом ситуация временно исправляется открытием Конфигуратора. Давайте подробно разберем, почему это происходит и как настроить систему для стабильной работы.

Анализ симптомов и выявление причины зависания

Проанализируем ситуацию: когда веб-сервер (Apache или IIS) получает Post или Get запрос, предназначенный для 1С, расширение веб-сервера (модули wsap24.dll или gws.dll) пытается инициализировать сеанс в базе данных. Если мы заглянем в Журнал регистрации, то увидим, что этап аутентификации пройден, но сам вызов метода HTTP-сервиса не начинается.

Интересной особенностью является влияние Конфигуратора. Запуск Конфигуратора принудительно инициализирует внутренние механизмы управления базой данных и инфраструктуру отладки. Если после его запуска запросы начинают «проходить», это прямой сигнал о том, что проблема кроется в подсистеме отладки или в блокировках управляющих файлов файловой базы данных 1Cv8.1cd.

Решение №1: Отключение отладки в файле публикации

Основным и самым эффективным решением для платформы версии 8.3.13 (и соседних релизов) является отключение режима отладки в параметрах публикации веб-сервиса. Рассмотрим подробнее, как это сделать. В папке, куда была выполнена публикация информационной базы, находится файл default.vrd. Это XML-файл, управляющий параметрами взаимодействия веб-сервера с 1С.

Найдем в этом файле узел debug и проанализируем его параметры. Если вы видите включенную отладку, ее необходимо деактивировать:

<debug enable="false" url="" />

Почему это помогает? Когда параметр enable установлен в значение true, каждый новый HTTP-сеанс пытается соединиться с менеджером отладки. В файловом варианте, если порт отладки занят или блокируется брандмауэром, поток исполнения «замирает» в ожидании ответа от отладочного сервера. Отключение этого параметра исключает лишнее звено в цепочке инициализации запроса.

Решение №2: Настройка повторного использования сеансов

В файловом режиме работы 1С через веб-сервер критически важно правильно управлять сеансами. За это отвечает параметр reuseSessions в том же файле default.vrd. Разберем возможные значения этого параметра:

Для устранения «зависаний» в файловом режиме рекомендуется установить значение dontuse. Это предотвратит ситуации, когда новый запрос пытается занять сеанс, который уже «уснул» или заблокирован другим процессом. Пример настройки в default.vrd:


<point name="MyService" 
       alias="myservice.1cws" 
       enable="true" 
       reuseSessions="dontuse" />

Решение №3: Проверка прав доступа учетной записи веб-сервера

Выясним причину, почему вход в Конфигуратор временно «оживляет» систему. Конфигуратор обычно запускается от имени пользователя с правами администратора. Веб-сервер же работает от имени системных учетных записей (например, IUSR в IIS или daemon в Apache).

Проанализируем права доступа к папке с информационной базой. Учетная запись, от которой запущен веб-сервер, должна иметь полные права (чтение, запись, изменение) не только на файл 1Cv8.1cd, но и на всю папку, так как в момент обращения создаются временные файлы блокировок 1Cv8.1cl и другие служебные объекты. Если прав недостаточно, процесс аутентификации может бесконечно ожидать возможности записать данные во временный файл, созданный ранее администратором (при входе в Конфигуратор).

Выполним следующие шаги для проверки:

  1. Определим пользователя, от имени которого работает пул приложений веб-сервера.
  2. В свойствах папки с базой данных на вкладке «Безопасность» добавим этого пользователя.
  3. Предоставим ему права «Изменение» и «Запись».
  4. Проверим права на папку временных файлов ОС (Temp), так как 1С активно использует её при работе через веб-расширение.

Решение №4: Особенности конкретных релизов платформы

Платформа 8.3.13.1644, упомянутая в проблеме, известна определенной нестабильностью в работе с HTTP-протоколами. Если отключение отладки не помогло, рассмотрим вариант смены версии платформы. Практика показывает, что:

При переходе на другой релиз обязательно перепубликуйте все веб-сервисы через диалог «Администрирование — Публикация на веб-сервере», чтобы обновить библиотеки расширения веб-сервера в системных папках.

Рекомендации по оптимизации окружения

Чтобы избежать повторения ситуации в будущем, проанализируем настройки антивирусного программного обеспечения. Часто антивирус блокирует доступ к файлу 1Cv8.1cd именно в момент попытки веб-сервера открыть его для нового сеанса.

Необходимо добавить в исключения антивируса:

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

← На главную