Гайд 1С: Настройка балансировки памяти между рабочими процессами rphost
При эксплуатации кластера 1С Enterprise возникают аварийные ситуации:
- Процесс
rphostразрастается до 50–100 ГБ RAM и падает по Out of Memory, аварийно обрывая сеансы сотен пользователей. - Фрагментация памяти в C++ рантайме платформы при длительной непрерывной работе процесса.
- Неравномерное распределение нагрузки, когда один процесс rphost перегружен, а остальные простаивают.
1. Расчет лимитов памяти рабочего сервера
В свойствах рабочего сервера кластера 1С (через консоль администрирования или RAC) настройте следующие параметры защиты:
- Безопасный расход памяти за один вызов:
2 097 152 КБ(2 ГБ). Если один вызов превышает этот порог, платформа принудительно прерывает его, спасая весь процесс rphost. - Допустимый объем памяти рабочих процессов:
Total_Server_RAM * 0.8(в байтах). - Интервал превышения допустимого объема памяти:
30 сек. Если суммарный объем процессов превышает лимит дольше 30 сек, кластер плавно запускает новый rphost и выводит старый из эксплуатации. - Период перезапуска рабочих процессов:
86400 сек(раз в сутки, рекомендуется ночью).
2. Настройка многопроцессного режима (Multi-rphost)
Для устранения конкуренции за кучу памяти на многоядерных серверах разделите нагрузку на несколько рабочих процессов:
// Рекомендация расчета количества процессов rphost:
// 1 рабочий процесс rphost на каждые 25-35 активных пользовательских сеансов
// или на каждые 4-8 физических ядер CPU.3. Плавный перезапуск без разрыва сессий
Кластер 1С использует механизм Graceful Restart: старый процесс rphost переводится в режим Не использовать (останавливает прием новых соединений), дожидается завершения активных транзакций и штатно освобождает занятую память.
Частые вопросы (FAQ)
Что произойдет с пользователем, чей сеанс превысил 'Безопасный расход памяти за один вызов'?
Сеанс получит ошибку 'Превышен безопасный расход памяти за один вызов', выполнение текущей транзакции будет прервано с откатом, но сам процесс rphost и остальные пользователи продолжат стабильную работу.
Почему процессы rphost не отдают память операционной системе сразу после закрытия тяжелых отчетов?
Это особенность менеджера памяти C++ (glibc ptmalloc в Linux или Windows Heap Manager): освобожденные страницы сохраняются внутри виртуальной кучи процесса для ускорения будущих аллокаций.
Как настроить изолированный rphost под фоновые задания?
Через механизм Требований назначения функциональности (ТНФ): для рабочего сервера задайте требование 'Сервис фоновых заданий' с типом применения 'Назначать', а для пользовательских серверов — 'Не назначать'.
Влияет ли параметр 'Количество ИБ на процесс = 1' на изоляцию?
Да, установка значения 1 гарантирует, что каждая информационная база кластера будет обслуживаться в собственном изолированном процессе rphost, исключая влияние сбоев одной базы на другую.