Тюнинг расхода памяти рабочими процессами rphost в кластере 1С
- Процессы
rphostнеконтролируемо разрастаются в оперативной памяти (утечки памяти из-за неоптимального кода конфигураций). - Сервер ОС уходит в глубокий свопинг (Swap I/O Thrashing), производительность падает до нуля.
- В Linux аварийно срабатывает механизм
OOM Killer, уничтожая процессы кластера 1С или СУБД. - Ошибка
Недостаточно свободной памяти на сервере 1С:Предприятия.
1. Архитектура управления памятью в кластере 1С
Кластер 1С предоставляет встроенный механизм контроля потребления памяти рабочими процессами (rphost). При достижении заданных порогов менеджер кластера (rmngr) плавно запускает новый замещающий рабочий процесс, переводит на него новые сеансы, а старый завершает после сброса активности.
2. Ключевые параметры памяти в свойствах кластера
| Параметр в консоли MMC / RAC | Рекомендуемое значение | Описание действия |
|---|---|---|
| Допустимый объем памяти (Лимит на 1 процесс) | 80% от RAM / Кол-во rphost | Порог памяти (в байтах), при превышении которого процесс помечается проблемным. |
| Интервал превышения допустимого объема памяти | 30-60 сек | Время непрерывного превышения лимита до запуска процедуры перезапуска процесса. |
| Временно допустимый объем памяти процессов | Общий RAM * 0.9 | Суммарный лимит памяти всех rphost, при котором кластер принудительно останавливает фоновые задания. |
| Интервал превышения временно допустимого объема | 10-20 сек | Таймаут аварийного сброса сессий при общем исчерпании RAM сервера. |
3. Расчет параметров для сервера 64 GB RAM
Если на сервере выделено 4 рабочих процесса rphost:
- Общая память под 1С: ~48 GB (остальное ОС и кэшам).
- Допустимый объем памяти:
12884901888байт (12 GB на один процесс). - Временно допустимый объем памяти:
53687091200байт (50 GB суммарно).
4. Применение параметров через утилиту RAC
# Настройка лимитов через RAC (значения указываются в байтах)
rac cluster update --cluster=<CLUSTER_ID> \
--max-memory-size=12884901888 \
--max-memory-time-limit=45 \
--temp-allowed-memory-size=53687091200 \
--temp-allowed-memory-time-limit=15 \
localhost:1545 Частые вопросы (FAQ)
Что происходит с активными пользователями при перезапуске rphost по превышению памяти?
Платформа переносит пользовательские сеансы на новый rphost прозрачно (с сохранением сеансовых данных). Пользователь может заметить лишь кратковременную задержку интерфейса на 1-2 секунды.
Почему после настройки лимитов rphost процессы перезапускаются слишком часто?
Установлен слишком низкий порог допустимой памяти для тяжелых отчетов или выгрузок. Увеличьте лимит на один процесс либо оптимизируйте объемные серверные запросы.
Что означает параметр 'Объем памяти рабочих процессов, до которого сервер считается производительным'?
Пока суммарная память процессов ниже этого порога, кластер считает сервер оптимальным и направляет на него новые клиентские соединения.
Помогает ли перезапуск rphost устранить утечки памяти в коде 1С?
Он устраняет последствия утечек, не давая серверу упасть, однако для устранения первопричины требуется оптимизация алгоритмов 1С и исключение зависания глобальных переменных.