В процессе разработки в среде 1С:Предприятие 8.3 разработчики часто сталкиваются с неприятным поведением: при попытке отладки или обычном старте сеанса по кнопке F5 Конфигуратор намертво зависает на 15–30 секунд, и только после этой паузы запускается клиентское приложение. При этом на файловых информационных базах старт происходит мгновенно, а замер производительности программного кода не фиксирует никаких задержек при инициализации модулей.
В этой статье мы подробно проанализируем физику этого процесса, выясним, почему возникает задержка, и разберем по шагам способы ее полного устранения.
Зависание Конфигуратора при старте клиент-серверной базы длительностью ровно 15–20 секунд свидетельствует об ожидании сетевого таймаута (TCP Connect Timeout) подсистемы отладки. Рассмотрим детальнее, как устроены механизмы отладки в платформе «1С:Предприятие».
Исторически в платформе 1С применялся TCP-протокол отладки. При его использовании архитектура взаимодействия выглядит следующим образом:
rphost или клиентский процесс 1cv8.exe пытается установить обратное TCP-соединение с Конфигуратором на динамический сетевой порт (из диапазона 1560–1591 или порт 1550).Начиная с версии платформы 8.3.7, фирмой «1С» был внедрен современный HTTP-протокол отладки. В этом режиме взаимодействие строится по классической централизованной схеме: сервер отладки принимает вызовы через стандартные HTTP-запросы без необходимости открытия непредсказуемых обратных входящих TCP-портов на рабочих станциях разработчиков. Именно поэтому переключение на протокол HTTP мгновенно решает проблему долгого запуска.
Выделим основные причины, которые приводят к задержке при использовании TCP-отладки:
1cv8.exe.Переход на HTTP-отладку является стандартом для современных конфигураций и полностью исключает проблемы с обратными сетевыми портами. Разберем настройку этого режима на клиенте и сервере.
Сервис → Параметры.Отладка.http://имя_сервера:1551 или оставим значение по умолчанию, если отладчик встроен в сервер приложений).Если служба сервера 1С:Предприятия запущена без параметров отладки, активируем ее на стороне сервера. Для этого в реестре Windows по пути:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64)
отредактируем параметр ImagePath, добавив в строку запуска флаги отладки по HTTP:
"C:\Program Files\1cv8\8.3.X.XXXX\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug -http
После изменения параметров перезапустим службу сервера через оснастку services.msc.
Если специфика инфраструктуры требует использования устаревшего протокола TCP, устраним блокировку входящих соединений на машине разработчика:
C:\Program Files\1cv8\8.3.X.XXXX\bin\1cv8.exe (а также 1cv8c.exe).1560-1591 и порта 1550.Для исключения задержек при разрешении сетевых имен выполним следующие действия:
Панели управления и снимем флажок с компонента IP версии 6 (TCP/IPv6) как на клиенте, так и на сервере 1С.C:\Windows\System32\drivers\etc\hosts от имени Администратора и добавим явное соответствие IP-адреса и имени сервера и рабочих станций:
127.0.0.1 localhost
192.168.1.10 srv-1c-app
192.168.1.150 dev-workstation
Проанализировав эти шаги и применив их на практике, мы устраняем причину возникновения сетевых таймаутов, и запуск 1С:Предприятия из конфигуратора становится практически мгновенным.