Почему не работает отладка на сервере 1С после обновления и как это исправить?

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

Разберем ситуацию, с которой разработчики и системные администраторы часто сталкиваются после обновления платформы 1С:Предприятие (например, на версии 8.3.18 и старше). Вы настраиваете ключ отладки, открываете порты в брандмауэре, но серверная отладка ведет себя нестабильно. После перезапуска агента сервера (службы ragent.exe) отладка работает около 5-10 минут, а затем соединение обрывается. При попытке переподключиться возникает ошибка вида: «Для выполнения отладки необходимо включить поддержку сетевого протокола tcp/ip», и доступной остается только клиентская отладка.

Проанализируем основные причины такого поведения и по шагам рассмотрим рабочие варианты решения проблемы.

Причина 1: Исчерпание свободного диапазона портов для отладки

По умолчанию для нужд отладки платформа 1С использует диапазон портов 1560:1591. Это всего 32 порта. Начиная с версии 8.3, кластер серверов 1С может динамически создавать большое количество рабочих процессов (rphost) и фоновых заданий. Каждое такое задание или процесс резервирует за собой порты из указанного пула.

Выясним причину обрыва через 10 минут: именно за это время сервер успевает «расплодить» фоновые задания, которые полностью занимают выделенные 32 порта. Как только свободные порты заканчиваются, новые сеансы (и попытки отладки) получить порт не могут.

Проверим занятость портов. Откройте командную строку от имени администратора на сервере и выполните команду:

netstat -a -n

Если вы видите, что множество портов в диапазоне 1560-1591 находятся в статусе LISTENING или SYN_SENT, значит пул исчерпан.

Решение: Увеличим диапазон портов в строке запуска службы агента сервера 1С. Для этого необходимо отредактировать параметры службы в реестре или свойствах ярлыка (если запускаете как приложение).

  1. Откройте редактор реестра Windows (regedit).
  2. Перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent.
  3. Найдите параметр ImagePath и измените значение ключа -range на более широкое, например, -range 1560:1691.
  4. Обязательно убедитесь, что в конце строки стоит ключ отладки: /debug (или -debug). Рекомендуется добавлять его в самый конец.
  5. Перезапустите службу Агента сервера 1С.

Причина 2: Миграция сеансов между рабочими процессами (rphost)

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

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

Для включения HTTP-отладки выполните следующие шаги:

  1. Откройте реестр Windows и перейдите к параметру ImagePath службы агента 1С.
  2. Замените обычный ключ -debug на комбинацию с указанием протокола: -debug -http (или /debug -http).
  3. Строка запуска должна выглядеть примерно так:
    
    "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
    
  4. В Конфигураторе 1С перейдите в меню «Сервис» -> «Параметры» -> вкладка «Запуск 1С:Предприятия» -> «Дополнительные» и убедитесь, что выбран протокол отладки HTTP.
  5. Перезапустите службу сервера 1С и Конфигуратор.

Если по каким-то причинам вы не можете использовать HTTP-отладку, есть обходной путь: в консоли администрирования кластеров 1С настройте правило распределения рабочих процессов в формате «1 информационная база = 1 рабочий процесс». Это запретит платформе перебрасывать сеансы между процессами, и TCP-отладка перестанет отваливаться.

Причина 3: Неучтенные порты в брандмауэре Windows

Часто системные администраторы открывают стандартные порты 1540, 1541 и диапазон 1560-1591, но забывают про порт 1550, который также активно задействуется при серверной отладке.

Решение: Посмотрим на правила брандмауэра и настроим их корректно:

  1. Создайте правило для входящих подключений (Inbound Rules), разрешающее TCP-трафик на порты: 1540, 1541, 1550, 1560-1691.
  2. Создайте аналогичное правило для исходящих подключений (Outbound Rules). Отладчик Конфигуратора и предмет отладки на сервере ведут двунаправленный обмен данными, поэтому исходящий трафик для этих портов (или для приложения 1cv8.exe) блокировать нельзя.

Причина 4: Сбойный кэш сеансовых данных на сервере

Иногда настройки правильные, порты открыты, но ошибка протокола TCP/IP продолжает возникать из-за «зависшего» кэша сеансов в служебных папках кластера.

Решение: Проведем очистку сеансового кэша сервера.

  1. Остановите службу Агента сервера 1С:Предприятие.
  2. Перейдите в каталог кластера (путь к нему указан в параметре -d строки запуска, например, C:\Program Files\1cv8\srvinfo).
  3. Откройте вложенную папку reg_1541.
  4. Найдите и удалите папку snccntx. В ней хранятся временные сеансовые данные. Внимание: удаляйте эту папку только при остановленной службе, чтобы не повредить данные работающих пользователей.
  5. Запустите службу сервера 1С.

С помощью описанных выше методов мы подробно разобрали, почему отладка может отключаться со временем, и как стабилизировать ее работу. В большинстве случаев одновременное использование HTTP-отладки (-http) и расширение диапазона портов полностью решают проблему на платформах 8.3.18 и новее.

← На главную