При активной разработке и поддержке больших конфигураций на платформе 1С:Предприятие 8.3 разработчики часто сталкиваются с неприятным эффектом: включение режима отладки на рабочем сервере (с использованием ключа -debug) приводит к заметному снижению производительности системы. Рабочие процессы начинают тратить дополнительные ресурсы на ожидание подключений отладчика, передачу контекста и мониторинг предметов отладки. В результате пользователи начинают жаловаться на «зависания» и медленную работу интерфейса.
Единственным правильным решением в такой ситуации является разделение сред: создание отдельного отладочного (тестового) кластера 1С на том же физическом сервере или на отдельной машине. Однако при создании второй службы сервера одной и той же версии платформы администраторы часто сталкиваются со следующими проблемами:
dbgs.exe).В этой статье мы подробно разберем, как правильно развернуть второй экземпляр службы сервера 1С на одной физической машине, настроить его на работу в режиме отладки (как по протоколу TCP, так и по HTTP) и полностью изолировать его от продуктивного кластера.
Прежде чем переходить к настройке, проанализируем внутренние механизмы платформы. Когда мы регистрируем стандартную службу сервера 1С:Предприятия, она по умолчанию использует:
ragent) — 1540.rmngr) — 1541.rphost) — 1560:1591.C:\Program Files\1cv8\srvinfo.-http).Если мы попытаемся создать вторую службу с другими портами (например, 1640, 1641, 1660:1691), но укажем тот же каталог данных srvinfo, обе службы начнут одновременно перезаписывать конфигурационный файл реестра кластера 1cv8wsrv.lst. Это неизбежно приведет к хаосу: базы будут «пропадать» из консоли администрирования, сеансы будут аварийно завершаться, а остановка одной службы заблокирует работу другой.
Также критически важно понимать поведение сервера отладки dbgs.exe. При использовании HTTP-отладки (ключ -http) служба 1С пытается запустить один общий процесс сервера отладки на порту 1550. Если этот порт уже занят первой службой, вторая служба либо не сможет активировать отладку на сервере, либо выдаст ошибку подключения.
Для создания изолированного отладочного кластера в первую очередь необходимо подготовить отдельную директорию на диске сервера, где будут храниться настройки этого кластера, списки баз и журналы регистрации.
Создадим на диске сервера (например, на быстром SSD) отдельную папку:
C:\ClusterData\Cluster_Debug
Важно: Убедитесь, что у пользователя операционной системы, от имени которого будет запускаться служба сервера 1С (например, USR1CV8), есть полные права (Чтение, Запись, Изменение) на эту папку. В противном случае служба не сможет стартовать или не сможет записывать конфигурационные файлы кластера.
Поскольку стандартная программа установки 1С не умеет регистрировать несколько служб одной версии, мы воспользуемся встроенной утилитой Windows sc.exe. Запустите командную строку (cmd) от имени Администратора.
Рассмотрим шаблон команды для создания новой службы с поддержкой отладки:
sc create "1C:Enterprise 8.3 Server Agent 1640" binPath= "\"C:\Program Files\1cv8\8.3.10.2252\bin\ragent.exe\" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -debug -http -debugServerPort 1650 -d \"C:\ClusterData\Cluster_Debug\"" start= auto obj= ".\USR1CV8" password= "ВашПарольПользователя1С" displayname= "1С:Предприятие 8.3 Сервер отладки (1640)"
Разберем детально каждый параметр командной строки, чтобы понять принципы настройки:
"1C:Enterprise 8.3 Server Agent 1640" — системное имя нашей новой службы. Оно должно быть уникальным.-srvc — указывает, что процесс запускается в режиме службы Windows.-agent — запускает процесс в режиме агента сервера (ragent.exe).-regport 1641 — порт главного менеджера кластера. Отличается от стандартного (1541) для исключения конфликтов.-port 1640 — основной порт агента сервера (вместо стандартного 1540). Именно его мы будем указывать в консоли администрирования при подключении к новому кластеру.-range 1660:1691 — диапазон портов для выделения рабочим процессам (rphost). Не должен пересекаться со стандартным диапазоном 1560:1591.-debug — включает режим отладки для всех рабочих процессов данного кластера.-http — указывает серверу использовать более современную и стабильную отладку по протоколу HTTP (вместо устаревшего TCP).-debugServerPort 1650 — критически важный ключ. Переопределяет порт локального сервера отладки (dbgs.exe) для этой конкретной службы, предотвращая конфликт с портом 1550 первой службы.-d "C:\ClusterData\Cluster_Debug" — путь к изолированному каталогу реестра кластера, который мы создали на Шаге 1.obj= ".\USR1CV8" password= "..." — учетные данные пользователя Windows, под которым будет работать служба. Крайне рекомендуется использовать того же пользователя, что и для основной службы, чтобы избежать проблем с правами к базам данных и файлам.В некоторых случаях, даже после успешной регистрации и запуска службы, при попытке начать отладку в Конфигураторе под управлением HTTP возникает ошибка: «Не удалось соединиться с сервером отладки по причине: Не указан сервер отладки». Это происходит из-за того, что менеджер кластера не может автоматически определить внешний IP-адрес сервера или отдает клиенту локальный адрес (например, 127.0.0.1 или имя хоста, которое не разрешается на стороне клиента).
Чтобы решить эту проблему, нам нужно жестко зафиксировать адрес сервера отладки. Для этого в параметры запуска службы добавляется ключ -debugServerAddr с явным указанием сетевого IP-адреса сервера 1С, который доступен на компьютерах разработчиков.
Модифицируем параметры запуска службы. Если служба уже создана, мы можем отредактировать строку запуска через реестр Windows:
Win + R, введите regedit и нажмите Enter.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.1C:Enterprise 8.3 Server Agent 1640.ImagePath для редактирования.-debugServerAddr [IP-адрес_Вашего_Сервера].Пример итогового значения параметра ImagePath в реестре:
"C:\Program Files\1cv8\8.3.10.2252\bin\ragent.exe" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -debug -http -debugServerPort 1650 -debugServerAddr 192.168.1.100 -d "C:\ClusterData\Cluster_Debug"
Внимание: Обратите внимание на кавычки. Ключ -d и путь к каталогу должны находиться внутри общих кавычек, если путь содержит пробелы, а сами ключи отладки лучше располагать перед параметром -d, чтобы исключить ошибки парсинга строки запуска операционной системой.
Для корректной работы отладочного кластера необходимо настроить правила фильтрации трафика. Нам требуется открыть входящие порты на сервере 1С и на клиентских машинах разработчиков.
Выясним, какие порты за что отвечают в нашей новой схеме:
dbgs.exe). Именно к нему будет обращаться Конфигуратор разработчика для получения отладочной информации по протоколу HTTP.Убедитесь, что все эти порты добавлены в исключения брандмауэра Windows (или аппаратного сетевого экрана вашей компании) на сервере для входящих подключений (тип протокола: TCP).
После успешного запуска новой службы 1С и добавления базы данных в отладочный кластер через консоль администрирования (подключившись по адресу ИмяСервера:1640), нам нужно правильно настроить параметры отладки в самом Конфигураторе.
Проанализируем шаги по настройке Конфигуратора:
-debugServerPort. Формат ввода:
http://192.168.1.100:1650 (или http://ИмяСервера:1650).После выполнения этих действий зайдите в меню Отладка — Подключение.... В списке доступных предметов отладки вы должны увидеть серверные сеансы (например, фоновые задания, серверные вызовы веб-сервисов или обычные сеансы тонкого клиента, выполняющие серверный код).
Если у вас по-прежнему не работает отладка на сервере или процессы конфликтуют, пройдитесь по этому чек-листу для локализации проблемы:
-d.USR1CV8 доступ к новой папке данных кластера.-port, -regport, -range, -debugServerPort).-debugServerAddr с реальным IP-адресом сервера, и доступен ли этот IP-адрес с компьютера разработчика командой ping.Использование изолированного кластера для отладки — это профессиональный стандарт администрирования систем на базе 1С:Предприятие 8.3, который гарантирует стабильность продуктивной среды и обеспечивает разработчикам комфортные условия для поиска ошибок без оглядки на производительность основной базы.