Каждый системный администратор и разработчик 1С рано или поздно сталкивается с дилеммой организации тестового контура. Разработка непосредственно в рабочей базе недопустима, а содержание полноценного тестового сервера требует дополнительных затрат на лицензии. В этой статье мы детально проанализируем проблему, когда старый тестовый x86-сервер перестает справляться с нагрузкой (вылетая с ошибкой соединения 54), а перенос тестовых баз на рабочий x64-сервер упирается в необходимость включения режима отладки (-debug), который может снизить производительность основной системы.
Мы разберем, как легально запустить несколько независимых служб сервера 1С на одном физическом сервере с использованием одной лицензии x64, настроим отдельный изолированный кластер для разработчиков с включенной отладкой и выясним причины нестабильной работы 32-битного сервера приложений.
Начнем с развенчания популярного мифа, упомянутого в обсуждении. Существует заблуждение, что для запуска каждого дополнительного процесса или кластера сервера 1С требуется отдельная серверная лицензия. Это не так.
Официальная лицензионная политика фирмы «1С» определяет следующее: одна серверная лицензия x64 (неважно, программная она или аппаратная USB) привязывается к конкретному компьютеру (физическому серверу или виртуальной машине). В рамках этой операционной системы вы имеете полное право запускать любое количество экземпляров службы ragent.exe. Все запущенные службы будут успешно использовать один и тот же лицензионный ключ.
Для реализации этой схемы нам потребуется настроить вторую службу Windows с уникальными сетевыми портами и отдельной рабочей директорией. Таким образом, рабочая база продолжит стабильно функционировать на стандартных портах без отладки, а базы разработки будут крутиться на альтернативных портах с включенным параметром отладки. Обе службы будут делить ресурсы одного физического сервера и использовать одну лицензию x64.
Выясним причину, по которой сервер разработки на x86 практически перестал работать после обновления платформы с версии 8.3.12 до 8.3.15. Ошибка «Удаленный хост принудительно разорвал существующее подключение» (код 10054 / ошибка 54) в данном контексте имеет чисто техническое объяснение:
rphost.exe) имеет жесткое ограничение на использование оперативной памяти — максимум 2 ГБ. Начиная с версий платформы 8.3.14/8.3.15, внутренние механизмы 1С стали потреблять значительно больше ОЗУ.rphost.exe за рамки 2 ГБ.Дополнительным фактором нестабильности часто выступает некорректная настройка протокола IPv6 в локальной сети. Для повышения стабильности работы серверов 1С мы рекомендуем отключать IPv6 в свойствах сетевого адаптера сервера и через системный реестр с помощью параметра DisabledComponents со значением 0xffffffff.
Рассмотрим подробнее, почему не стоит просто включать режим отладки на основном рабочем кластере. Существует устоявшееся мнение, что режим отладки сильно замедляет работу пользователей. На самом деле ключевая проблема кроется в протоколе взаимодействия отладчика и сервера:
При классической TCP/IP-отладке (параметр -debug) сервер приложений пытается установить обратное сетевое соединение с конфигуратором на компьютере разработчика. Если компьютер разработчика заблокирован брандмауэром, выключен, находится за медленным VPN-соединением или просто завис, рабочий процесс сервера 1С rphost.exe зависает в ожидании ответа (тайм-аут соединения). В этот момент обычные пользователи, чьи сессии обслуживаются тем же процессом rphost.exe, начинают испытывать сильные задержки («зависания» интерфейса).
Для минимизации этого влияния в современных версиях платформы рекомендуется использовать HTTP-отладку. Запуск службы с параметрами -debug -http переводит механизм отладки на использование специального HTTP-сервера отладки. Данный протокол работает в разы стабильнее, легче проходит через корпоративные сетевые экраны и практически не оказывает негативного влияния на производительность других пользователей, работающих в той же службе.
Разберем по шагам, как запустить дополнительный агент сервера 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"
Разберем ключевые параметры этой команды:
sc create "1C:Enterprise 8.3 Server Agent DEV" — регистрирует новую службу в Windows под уникальным именем.binPath= — указывает путь к исполняемому файлу агента ragent.exe. Обратите внимание на экранирование кавычек (\").-srvc -agent — стандартные параметры запуска программы в режиме службы Windows.-regport 2541 — порт главного менеджера кластера (по умолчанию используется 1541, для тестовой службы мы задаем 2541).-port 2540 — порт агента сервера (по умолчанию используется 1540, мы задаем 2540).-range 2560:2591 — диапазон портов для рабочих процессов rphost.exe (по умолчанию 1560:1591, мы смещаем на 2560:2591). Это исключит конфликты сетевых соединений между основным и тестовым кластерами.-d "C:\Program Files\1cv8\srvinfo_dev" — путь к директории хранения настроек кластера. Крайне важно указать новую, пустую папку (например, srvinfo_dev), отличную от рабочей директории основного сервера.-debug -http — включает режим отладки по более современному и стабильному HTTP-протоколу. Если требуется классическая TCP/IP отладка, укажите просто -debug.Иногда при создании службы через командную строку могут возникнуть ошибки в синтаксисе путей. Мы всегда можем скорректировать параметры запуска созданной службы в системном реестре Windows:
Win + R, введите regedit и нажмите Enter для запуска редактора реестра.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.1C:Enterprise 8.3 Server Agent DEV).ImagePath.После этого откройте оснастку "Службы" (services.msc), найдите созданную службу и запустите её. Не забудьте изменить тип запуска службы на "Автоматически", чтобы она стартовала вместе с сервером.
После успешного запуска новой службы нам необходимо зарегистрировать её в утилите администрирования серверов 1С:
SERVER-PROD:2540).2541.Если в перспективе ваша организация планирует переход на более современные версии платформы (начиная с 8.3.23 и выше), мы рекомендуем обратить внимание на официальное бесплатное решение от фирмы «1С» — Комьюнити-лицензию разработчика.
Она позволяет легально развернуть полноценный сервер 1С (как x64 для Windows, так и для Linux) для целей разработки и тестирования абсолютно бесплатно. Основные особенности комьюнити-лицензии:
Использование комьюнити-лицензии полностью снимает любые архитектурные риски совместного использования ресурсов рабочего сервера и позволяет развернуть изолированные тестовые среды на Linux или виртуальных машинах разработчиков.