Гайд 1С: Устранение утечек дескрипторов и памяти в рабочих процессах rphost
- Рабочие процессы
rphostнепрерывно увеличивают потребление RAM вплоть до срабатывания OOM Killer. - Ошибка
Too many open filesили сбои сетевых сокетов в журнале сервера 1С. - Зависание сеансов при выполнении длительных фоновых заданий или интеграций.
1. Настройка политик автоперезапуска процессов в кластере 1С
В консоли администрирования кластера серверов 1С (в свойствах кластера) задайте защитные ограничения для рабочих процессов:
- Допустимый объем памяти: Укажите
80% от физической памяти сервера(в байтах). - Интервал превышения допустимого объема памяти:
30–60 секунд. - Временно допустимый объем памяти процессов: Лимит аварийного завершения.
- Интервал перезапуска рабочих процессов:
86400 секунд (1 раз в сутки).
2. Диагностика утечек файловых дескрипторов в Linux
# Поиск PID процессов rphost
pgrep -l rphost
# Подсчет открытых дескрипторов (файлы, сокеты, каналы)
ls -l /proc/<PID_RPHOST>/fd | wc -l
# Анализ типов открытых дескрипторов
lsof -p <PID_RPHOST> | awk '{print $5}' | sort | uniq -c | sort -nr3. Увеличение системных лимитов дескрипторов (Linux)
В файле /etc/security/limits.d/99-1c.conf установите:
usr1cv8 soft nofile 65536
usr1cv8 hard nofile 65536
usr1cv8 soft nproc 32768
usr1cv8 hard nproc 32768В systemd-юните службы /etc/systemd/system/srv1cv83.service добавьте:
[Service]
LimitNOFILE=65536
LimitNPROC=32768 Частые вопросы (FAQ)
Почему в rphost возникают утечки памяти?
Утечки вызываются некорректным кодом конфигурации (неочищенные глобальные переменные, циклические ссылки в объектах, не закрытые COM-соединения/HTTP-ответы) или багами конкретного релиза платформы.
Что происходит с сессиями пользователей при автоперезапуске rphost по лимиту памяти?
Кластер 1С создает новый процесс rphost, плавно переносит в него новые входящие вызовы пользователей, а старый rphost завершается после завершения активных вызовов без обрыва сессий.
Как ограничить количество информационных баз на один рабочий процесс?
В свойствах рабочего сервера кластера 1С установите параметр 'Количество ИБ на один процесс' = 1, чтобы изолировать тяжелые базы друг от друга в разных процессах rphost.
Как понять, какой именно сеанс вызвал резкий рост памяти rphost?
В консоли кластера 1С откройте список сеансов и отсортируйте по колонке 'Память (текущая)' и 'Память (всего)', либо используйте событие MEM технологического журнала 1С.