При необходимости размещения большого количества информационных баз 1С:Предприятия на одном сервере возникает задача правильного создания и настройки множества кластеров. Некорректный подход может привести к ошибкам, таким как "Свободный рабочий процесс сервера 1С:Предприятия не найден" или "Ни один рабочий процесс не найден". Рассмотрим подробно, как избежать этих проблем и организовать эффективную работу серверной инфраструктуры 1С.
Прежде чем приступать к созданию кластеров, необходимо четко понимать архитектуру сервера 1С:Предприятия и назначение его компонентов. Сервер 1С состоит из нескольких ключевых процессов, каждый из которых выполняет свою роль и использует определенные порты:
ragent.exe): Это единственный экземпляр, который должен быть запущен на каждом физическом сервере 1С. Он является "дирижером" всей серверной платформы, управляет всеми кластерами, которые на нем созданы. Агент сервера обычно слушает следующие порты:
-port): Основной порт для взаимодействия с другими агентами (если используется отказоустойчивый кластер серверов) или с консолью администрирования.-regport): Порт для регистрации самого агента сервера в системе 1С.-range): Используется для внутренних нужд агента и, как правило, не должен конфликтовать с диапазонами рабочих процессов. По умолчанию это 1560-1591.Критически важно запомнить: на одном рабочем сервере может быть запущен только один агент сервера (ragent), обслуживающий все кластеры на данном сервере. Если вы пытаетесь запустить несколько служб ragent, каждая из которых прослушивает свой набор портов, это является фундаментальной ошибкой, которая приведет к нестабильности и конфликтам.
rmngr.exe): Каждый созданный кластер имеет свой менеджер. Этот процесс управляет конкретным кластером, распределяет нагрузку, запускает и останавливает рабочие процессы. Менеджер кластера регистрируется на агенте сервера на своем уникальном порту. Именно эти порты (например, 1541, 2541, 3541 и т.д. в случае автора) необходимо разносить. Они определяются при создании кластера через консоль администрирования.rphost.exe): Эти процессы выполняют основную работу по обслуживанию информационных баз: обрабатывают запросы пользователей, взаимодействуют с базами данных, исполняют код 1С. Каждый рабочий процесс резервирует один порт из заданного для кластера диапазона.Автор столкнулся с проблемами при создании 27 кластеров на одном сервере с 91 базой, получая ошибки "Свободный рабочий процесс сервера 1С:Предприятия не найден" и "Ни один рабочий процесс не найден". Его конфигурация включала разделение портов по 1000 (например, 1541, 2541, 3541 для кластеров и 1560:1591, 2560:2591 для диапазонов рабочих процессов). Мы проанализируем, в чем могла быть причина.
Основная гипотеза заключается в том, что автор, возможно, пытался запустить 27 отдельных служб ragent, каждая со своим набором портов, что является некорректным подходом. Однако, судя по предоставленной команде запуска ragent:
"C:\Program Files\1cv8\8.3.27.1936\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1cv8\srvinfo"
Это выглядит как команда для запуска одного агента сервера. Если это так, то проблема, скорее всего, кроется в следующем:
rphost) в каждом кластере. Хотя автор указывает на использование уникальных диапазонов (например, -range 2560:2591 в примере rphost), нужно убедиться, что для каждого из 27 кластеров был назначен свой уникальный и достаточный диапазон. Диапазон портов по умолчанию (1560-1591) рассчитан всего на 31 рабочий процесс. Если кластеры содержат большое количество баз (автор указывает 91 базу на 27 кластеров), и некоторые кластеры имеют более 31 ИБ, или если диапазоны пересекались, это могло вызвать ошибку "Свободный рабочий процесс сервера 1С:Предприятия не найден".rphost потребляет память, и их большое количество может привести к нехватке ресурсов, особенно если базы активно используются. Операционная система Windows Server 2022 Datacenter, указанная автором, имеет свои ограничения по количеству потоков и процессов.Ошибка "Ни один рабочий процесс не найден" или "Ни один рабочий процесс не доступен" напрямую указывает на то, что менеджер кластера не смог запустить или обнаружить ни один процесс rphost в своем диапазоне. Это может быть результатом конфликта портов, недостатка ресурсов или некорректной настройки диапазона портов для самого кластера.
Проверка портов через PowerShell, выполненная автором, показала, что многие порты свободны. Это хороший начальный шаг, но он не исключает конфликтов динамически выделяемых портов или проблем с запуском rphost.
Рассмотрим шаги для корректного создания и настройки множества кластеров 1С:Предприятия на одном сервере.
ragent)Ваш сервер 1С должен иметь только одну службу "Агент сервера 1С:Предприятия", которая запускает процесс ragent.exe. Если вы создавали несколько таких служб с разными портами, вам необходимо удалить лишние и оставить только одну. Мы рассмотрим стандартный запуск службы агента сервера:
"C:\Program Files\1cv8\8.3.27.1936\bin\ragent.exe" -install -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1cv8\srvinfo"
Где:
-install: Устанавливает службу.-srvc: Запуск в качестве службы.-agent: Указывает, что это агент сервера.-regport 1541: Порт регистрации агента сервера.-port 1540: Основной порт для взаимодействия с консолью администрирования и другими серверами.-range 1560:1591: Диапазон портов для внутренних нужд ragent. Этот диапазон должен быть уникальным и не должен пересекаться с диапазонами rphost, которые вы будете назначать для кластеров. В данном случае, это диапазон по умолчанию, который подходит, так как мы будем назначать отдельные диапазоны для rphost каждого кластера.-d "D:\1cv8\srvinfo": Путь к каталогу с файлами конфигурации сервера.После установки или проверки параметров, запустите службу "Агент сервера 1С:Предприятия" через оснастку "Службы" Windows.
Теперь, когда у нас есть один корректно работающий агент сервера, мы можем создавать сколько угодно кластеров (в рамках ресурсов сервера) через Консоль администрирования серверов 1С:Предприятия. Мы разберем, как назначить каждому кластеру свой менеджер и свои рабочие процессы с уникальными портами.
rmngr.exe). Именно этот порт вы должны были увеличивать по 1000, как делал автор (1541, 2541, 3541 и т.д.). Убедитесь, что каждый новый кластер получает свой уникальный порт менеджера. Например, для первого кластера это может быть 1541 (если ragent использует 1540), для второго — 2541, для третьего — 3541, и так далее, до 27541, как планировал автор. Эти порты не должны пересекаться.rphost) в свойствах кластера. Это один из наиболее важных шагов, который часто становится источником проблем.
rphost именно этого кластера. Например:
rphost достаточно широк для обслуживания всех баз в этом кластере. Помните, что стандартный диапазон 1560:1591 (32 порта) может обслужить до 31 рабочего процесса. Если в одном кластере планируется больше рабочих процессов (например, из-за параметра "Количество ИБ на процесс" или большого числа активных сеансов), диапазон портов должен быть соответствующим образом расширен. Например, 2560:2599 для 40 процессов.Для предотвращения ошибок, связанных с нехваткой ресурсов или нестабильной работой, мы рассмотрим несколько ключевых параметров, которые можно настроить в свойствах кластера и рабочего сервера.
rphost процессов и, как следствие, потребления ОЗУ. Для 91 базы и 27 кластеров это может быть избыточно. Обычно используют значение, которое позволяет распределить нагрузку, например, 5-10 ИБ на процесс, или настраивают индивидуально для нагруженных баз.rphost процессов, но увеличит нагрузку на каждый из них.Мы рассмотрим инструменты и подходы для мониторинга и диагностики работы кластеров 1С.
netstat -ano в командной строке или PowerShell, чтобы увидеть, какие порты заняты и какими процессами (PID). С помощью Process Explorer можно сопоставить PID с именем процесса.Для повышения стабильности и производительности вашей конфигурации из 91 базы и 27 кластеров, мы предлагаем следующие рекомендации:
rphost) на каждую ИБ.srvinfo критически важна скорость дисковой подсистемы. Используйте SSD или NVMe диски.Мы рассмотрим пример, как могла бы выглядеть корректная настройка для вашего сценария.
Предположим, у вас есть один сервер 1CSRV.
ragent)
Служба "Агент сервера 1С:Предприятия" запущена с параметрами, например:
"C:\Program Files\1cv8\8.3.27.1936\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1cv8\srvinfo"
Этот агент управляет всеми последующими кластерами.
Вы создаете 27 кластеров, например:
Для каждого кластера мы назначаем уникальный порт менеджера кластера (например, 2541, 3541, ..., 27541, 28541) и уникальный, непересекающийся и достаточно широкий диапазон портов для рабочих процессов (например, 2560:2600, 3560:3600 и т.д.). Такой подход минимизирует конфликты портов и позволяет агенту сервера корректно управлять всеми кластерами и их рабочими процессами.
При правильной настройке одного агента сервера и корректном распределении уникальных диапазонов портов для менеджеров и рабочих процессов каждого кластера, вы сможете избежать ошибок "Свободный рабочий процесс сервера 1С:Предприятия не найден" и "Ни один рабочий процесс не найден", обеспечив стабильную и эффективную работу серверной инфраструктуры 1С:Предприятия.