Автоматический перезапуск рабочих процессов (rphost) кластера 1С
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Исходный код разработки на GitHub
Поддерживаемая версия платформы 1С: 8.3.15 и выше.
Рабочий процесс (rphost) 1С иногда может потреблять большое количество оперативной памяти. Это может происходить по разным причинам. Главная проблема при этом заключается в том, что может происходить фрагментация памяти рабочего процесса или её перерасход, так называемая утечка памяти. Следствием этого может являться деградация производительности всего кластера 1С в целом и данного рабочего процесса в частности.
Средства управления кластером 1С не позволяют настраивать перезапуск одного рабочего процесса в случае превышения им установленного лимита памяти. Данная разработка призвана решить именно эту конкретную задачу.
В случае превышения установленного лимита расхода памяти на один рабочий процесс служба rphost-manager регулирует свойство TemporaryAllowedProcessesTotalMemory (временно допустимый объём памяти всех рабочих процессов) соответствующего рабочего сервера таким образом, чтобы менеджер кластера 1С начал перезапуск его rphost'ов штатными средствами. После перезапуска служба rphost-manager возвращает эти настройки к исходным значениям.
Установка службы rphost-manager
- Установить .NET Core 3.1.
- Установить COMConnector 1C, выполнив команду от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.15.1778\bin\comcntr.dll"
- Распаковать содержимое установочного архива в любой каталог.
- Установить сервис Windows, выполнив команду от имени администратора:
sc create "1C RpHost Manager" binPath="D:\RphostManager\rphost-manager.exe"
Описание настроек службы rphost-manager
- LogSize - размер лога программы в байтах. По достижению этого лимита файл лога перезаписывается.
- CLSID - идентификатор COM объекта "V83.COMConnector". Данная настройка используется только в том случае, если она заполнена. В противном случае используется ProgID "V83.COMConnector".
- InspectionPeriodicity - периодичность инспекции объёма памяти, используемого rphost'ами, в секундах.
- ServerAddress - адрес центрального сервера 1С.
- UserName - имя пользователя для подключения к кластеру 1С.
- Password - пароль пользователя для подключения к кластеру 1С.
- WorkingServerResetWaitTime - период ожидания переключения rphost'ов менеджером кластера 1С в нерабочее состояние в секундах.
- WorkingProcessMemoryLimit - лимит памяти для одного rphost'а в килобайтах. Используется только в том случае, если не определён список индивидуальных настроек для рабочих серверов WorkingServerMemoryLimits.
- WorkingServerMemoryLimits - список рабочих серверов 1С, которые нужно инспектировать, и лимит памяти rphost'а для каждого сервера в отдельности. Если список пустой, то инспектируются все сервера кластера, а в качестве лимита памяти rphost'а используется настройка WorkingProcessMemoryLimit. Если сервер не указан, то его инспекция не производится.
Пример настройки для всех рабочих серверов кластера 1С
Лимит памяти для одного рабочего процесса для всех рабочих серверов установлен на уровне 4 Gb
{
"LogSize": 131072,
"CLSID": "",
"InspectionPeriodicity": 180,
"ServerAddress": "tcp://MSK01:1540",
"UserName": "",
"Password": "",
"WorkingServerResetWaitTime": 10,
"WorkingProcessMemoryLimit": 4194304,
"WorkingServerMemoryLimits": {},
"HostOptions": {
"ShutdownTimeout": "00:00:30"
}
}
Пример индивидуальной для рабочих серверов настройки
Для сервера MSK01-SRV01 установлен лимит памяти одного рабочего процесса на уровне 1 Gb
Для сервера MSK01-SRV02 установлен лимит памяти одного рабочего процесса на уровне 2 Gb
Настройка WorkingProcessMemoryLimit игнорируется.
Важно: имена серверов указываются так, как они отображаются в консоли управления кластером 1С.
{
"LogSize": 262144,
"CLSID": "181E893D-73A4-4722-B61D-D604B3D67D47",
"InspectionPeriodicity": 300,
"ServerAddress": "tcp://MSK01:1540",
"UserName": "",
"Password": "",
"WorkingServerResetWaitTime": 10,
"WorkingProcessMemoryLimit": 2097152,
"WorkingServerMemoryLimits": {
"MSK01-SRV01": 1048576,
"MSK01-SRV02": 2097152
},
"HostOptions": {
"ShutdownTimeout": "00:00:30"
}
}
Разработка прошла опытно-промышленную эксплуатацию на кластере из 4-х рабочих серверов 1С. Показала себя успешно. Иногда используется для ситуативного перезапуска какого-нибудь одного "распухшего" рабочего процесса.
Вступайте в нашу телеграмм-группу Инфостарт