Как настроить отдельный кластер 1С для разработки с включенной отладкой (debug) на рабочем сервере без покупки дополнительных лицензий?

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

Каждый системный администратор и разработчик 1С рано или поздно сталкивается с дилеммой организации тестового контура. Разработка непосредственно в рабочей базе недопустима, а содержание полноценного тестового сервера требует дополнительных затрат на лицензии. В этой статье мы детально проанализируем проблему, когда старый тестовый x86-сервер перестает справляться с нагрузкой (вылетая с ошибкой соединения 54), а перенос тестовых баз на рабочий x64-сервер упирается в необходимость включения режима отладки (-debug), который может снизить производительность основной системы.

Мы разберем, как легально запустить несколько независимых служб сервера 1С на одном физическом сервере с использованием одной лицензии x64, настроим отдельный изолированный кластер для разработчиков с включенной отладкой и выясним причины нестабильной работы 32-битного сервера приложений.

Лицензирование нескольких экземпляров служб на одном сервере

Начнем с развенчания популярного мифа, упомянутого в обсуждении. Существует заблуждение, что для запуска каждого дополнительного процесса или кластера сервера 1С требуется отдельная серверная лицензия. Это не так.

Официальная лицензионная политика фирмы «1С» определяет следующее: одна серверная лицензия x64 (неважно, программная она или аппаратная USB) привязывается к конкретному компьютеру (физическому серверу или виртуальной машине). В рамках этой операционной системы вы имеете полное право запускать любое количество экземпляров службы ragent.exe. Все запущенные службы будут успешно использовать один и тот же лицензионный ключ.

Для реализации этой схемы нам потребуется настроить вторую службу Windows с уникальными сетевыми портами и отдельной рабочей директорией. Таким образом, рабочая база продолжит стабильно функционировать на стандартных портах без отладки, а базы разработки будут крутиться на альтернативных портах с включенным параметром отладки. Обе службы будут делить ресурсы одного физического сервера и использовать одну лицензию x64.

Почему 32-битный (x86) сервер падал с ошибкой 10054 после обновления платформы?

Выясним причину, по которой сервер разработки на x86 практически перестал работать после обновления платформы с версии 8.3.12 до 8.3.15. Ошибка «Удаленный хост принудительно разорвал существующее подключение» (код 10054 / ошибка 54) в данном контексте имеет чисто техническое объяснение:

  1. Адресное пространство процесса: Любой 32-битный процесс в операционной системе Windows (включая рабочий процесс сервера 1С rphost.exe) имеет жесткое ограничение на использование оперативной памяти — максимум 2 ГБ. Начиная с версий платформы 8.3.14/8.3.15, внутренние механизмы 1С стали потреблять значительно больше ОЗУ.
  2. Переполнение памяти при разработке: Типичные задачи разработчиков — сравнение и объединение конфигураций, конфигурационное обновление тяжелых баз, массовая реструктуризация или запуск тяжелых отчетов — мгновенно выводят потребление памяти процессом rphost.exe за рамки 2 ГБ.
  3. Аварийное завершение: Как только процесс превышает лимит, операционная система принудительно завершает его работу. Клиентское приложение 1С в этот момент мгновенно теряет связь с сервером и выдает ошибку 10054.

Дополнительным фактором нестабильности часто выступает некорректная настройка протокола IPv6 в локальной сети. Для повышения стабильности работы серверов 1С мы рекомендуем отключать IPv6 в свойствах сетевого адаптера сервера и через системный реестр с помощью параметра DisabledComponents со значением 0xffffffff.

Влияние режима отладки (debug) на производительность рабочего сервера

Рассмотрим подробнее, почему не стоит просто включать режим отладки на основном рабочем кластере. Существует устоявшееся мнение, что режим отладки сильно замедляет работу пользователей. На самом деле ключевая проблема кроется в протоколе взаимодействия отладчика и сервера:

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

Для минимизации этого влияния в современных версиях платформы рекомендуется использовать HTTP-отладку. Запуск службы с параметрами -debug -http переводит механизм отладки на использование специального HTTP-сервера отладки. Данный протокол работает в разы стабильнее, легче проходит через корпоративные сетевые экраны и практически не оказывает негативного влияния на производительность других пользователей, работающих в той же службе.

Пошаговый алгоритм создания второй службы 1С с режимом отладки

Разберем по шагам, как запустить дополнительный агент сервера 1С на том же компьютере через командную строку Windows. Нам потребуется создать новую службу Windows, назначить ей новые порты и указать отдельный каталог для служебных файлов (чтобы они не конфликтовали с основным кластером).

Шаг 1. Откройте командную строку (cmd.exe) от имени Администратора.

Шаг 2. Выполните команду регистрации новой службы sc create. Обратите внимание на синтаксис: после знака равенства (=) обязательно должен идти пробел!

Проанализируем пример команды для платформы версии 8.3.15:


sc create "1C:Enterprise 8.3 Server Agent DEV" binPath= "\"C:\Program Files\1cv8\8.3.15.1830\bin\ragent.exe\" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d \"C:\Program Files\1cv8\srvinfo_dev\" -debug -http"

Разберем ключевые параметры этой команды:

Редактирование параметров запуска службы через реестр

Иногда при создании службы через командную строку могут возникнуть ошибки в синтаксисе путей. Мы всегда можем скорректировать параметры запуска созданной службы в системном реестре Windows:

  1. Нажмите сочетание клавиш Win + R, введите regedit и нажмите Enter для запуска редактора реестра.
  2. Перейдите по следующему пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
  3. Найдите в списке службу с именем, которое вы указали при создании (в нашем примере — 1C:Enterprise 8.3 Server Agent DEV).
  4. Откройте строковый параметр ImagePath.
  5. Убедитесь, что все пути к файлам и каталогам заключены в кавычки, а порты и ключи отладки указаны верно. При необходимости отредактируйте строку и нажмите "ОК".

После этого откройте оснастку "Службы" (services.msc), найдите созданную службу и запустите её. Не забудьте изменить тип запуска службы на "Автоматически", чтобы она стартовала вместе с сервером.

Подключение к новому кластеру через консоль администрирования

После успешного запуска новой службы нам необходимо зарегистрировать её в утилите администрирования серверов 1С:

  1. Запустите утилиту "Администрирование серверов 1С Предприятия".
  2. Зарегистрируйте новое подключение к центральному серверу, указав в качестве адреса имя вашего компьютера и двоеточие с портом агента (например, SERVER-PROD:2540).
  3. Внутри этого подключения создайте новый кластер с портом менеджера 2541.
  4. Создайте информационные базы для разработчиков внутри этого кластера. Теперь эти базы будут работать полностью обособленно от производственной среды, с включенной отладкой и без взаимного влияния на рабочие процессы пользователей.

Современная альтернатива: Бесплатная комьюнити-лицензия разработчика

Если в перспективе ваша организация планирует переход на более современные версии платформы (начиная с 8.3.23 и выше), мы рекомендуем обратить внимание на официальное бесплатное решение от фирмы «1С» — Комьюнити-лицензию разработчика.

Она позволяет легально развернуть полноценный сервер 1С (как x64 для Windows, так и для Linux) для целей разработки и тестирования абсолютно бесплатно. Основные особенности комьюнити-лицензии:

Использование комьюнити-лицензии полностью снимает любые архитектурные риски совместного использования ресурсов рабочего сервера и позволяет развернуть изолированные тестовые среды на Linux или виртуальных машинах разработчиков.

← На главную