Разберем ситуацию, с которой разработчики и системные администраторы часто сталкиваются после обновления платформы 1С:Предприятие (например, на версии 8.3.18 и старше). Вы настраиваете ключ отладки, открываете порты в брандмауэре, но серверная отладка ведет себя нестабильно. После перезапуска агента сервера (службы ragent.exe) отладка работает около 5-10 минут, а затем соединение обрывается. При попытке переподключиться возникает ошибка вида: «Для выполнения отладки необходимо включить поддержку сетевого протокола tcp/ip», и доступной остается только клиентская отладка.
Проанализируем основные причины такого поведения и по шагам рассмотрим рабочие варианты решения проблемы.
По умолчанию для нужд отладки платформа 1С использует диапазон портов 1560:1591. Это всего 32 порта. Начиная с версии 8.3, кластер серверов 1С может динамически создавать большое количество рабочих процессов (rphost) и фоновых заданий. Каждое такое задание или процесс резервирует за собой порты из указанного пула.
Выясним причину обрыва через 10 минут: именно за это время сервер успевает «расплодить» фоновые задания, которые полностью занимают выделенные 32 порта. Как только свободные порты заканчиваются, новые сеансы (и попытки отладки) получить порт не могут.
Проверим занятость портов. Откройте командную строку от имени администратора на сервере и выполните команду:
netstat -a -n
Если вы видите, что множество портов в диапазоне 1560-1591 находятся в статусе LISTENING или SYN_SENT, значит пул исчерпан.
Решение: Увеличим диапазон портов в строке запуска службы агента сервера 1С. Для этого необходимо отредактировать параметры службы в реестре или свойствах ярлыка (если запускаете как приложение).
regedit).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent.ImagePath и измените значение ключа -range на более широкое, например, -range 1560:1691./debug (или -debug). Рекомендуется добавлять его в самый конец.В современных версиях платформы 1С:Предприятие 8.3 реализован механизм динамической балансировки нагрузки. Это означает, что сеанс пользователя может «на лету» мигрировать с одного рабочего процесса (rphost) на другой. Стандартная TCP-отладка не умеет отслеживать эту миграцию. При смене процесса связь между отладчиком в Конфигураторе и пользовательским сеансом безвозвратно разрывается.
Решение: Рассмотрим переход на современный механизм — HTTP-отладку. Протокол HTTP изначально проектировался так, чтобы корректно обрабатывать потерю соединения и миграцию сеансов, поэтому отладчик по HTTP без проблем «догоняет» переехавший сеанс.
Для включения HTTP-отладки выполните следующие шаги:
ImagePath службы агента 1С.-debug на комбинацию с указанием протокола: -debug -http (или /debug -http).
"C:\Program Files\1cv8\8.3.18.1289\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1691 -d "C:\Program Files\1cv8\srvinfo" /debug -http
Если по каким-то причинам вы не можете использовать HTTP-отладку, есть обходной путь: в консоли администрирования кластеров 1С настройте правило распределения рабочих процессов в формате «1 информационная база = 1 рабочий процесс». Это запретит платформе перебрасывать сеансы между процессами, и TCP-отладка перестанет отваливаться.
Часто системные администраторы открывают стандартные порты 1540, 1541 и диапазон 1560-1591, но забывают про порт 1550, который также активно задействуется при серверной отладке.
Решение: Посмотрим на правила брандмауэра и настроим их корректно:
1540, 1541, 1550, 1560-1691.1cv8.exe) блокировать нельзя.Иногда настройки правильные, порты открыты, но ошибка протокола TCP/IP продолжает возникать из-за «зависшего» кэша сеансов в служебных папках кластера.
Решение: Проведем очистку сеансового кэша сервера.
-d строки запуска, например, C:\Program Files\1cv8\srvinfo).reg_1541.snccntx. В ней хранятся временные сеансовые данные. Внимание: удаляйте эту папку только при остановленной службе, чтобы не повредить данные работающих пользователей.С помощью описанных выше методов мы подробно разобрали, почему отладка может отключаться со временем, и как стабилизировать ее работу. В большинстве случаев одновременное использование HTTP-отладки (-http) и расширение диапазона портов полностью решают проблему на платформах 8.3.18 и новее.