Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_RPHOST_MEMORY_LEAK 1С:Предприятие и СУБД

Гайд 1С: Настройка балансировки памяти между рабочими процессами rphost

Обновлено: 26.08.2026 · Официальная документация ↗

При эксплуатации кластера 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 переводится в режим Не использовать (останавливает прием новых соединений), дожидается завершения активных транзакций и штатно освобождает занятую память.

💡 Практика специалистов: В операционных системах Linux обязательно настраивайте альтернативный аллокатор памяти jemalloc или tcmalloc через LD_PRELOAD для службы srv1cv8 — это снижает фрагментацию виртуальной памяти rphost на 30-40%.

Частые вопросы (FAQ)

Что произойдет с пользователем, чей сеанс превысил 'Безопасный расход памяти за один вызов'?

Сеанс получит ошибку 'Превышен безопасный расход памяти за один вызов', выполнение текущей транзакции будет прервано с откатом, но сам процесс rphost и остальные пользователи продолжат стабильную работу.

Почему процессы rphost не отдают память операционной системе сразу после закрытия тяжелых отчетов?

Это особенность менеджера памяти C++ (glibc ptmalloc в Linux или Windows Heap Manager): освобожденные страницы сохраняются внутри виртуальной кучи процесса для ускорения будущих аллокаций.

Как настроить изолированный rphost под фоновые задания?

Через механизм Требований назначения функциональности (ТНФ): для рабочего сервера задайте требование 'Сервис фоновых заданий' с типом применения 'Назначать', а для пользовательских серверов — 'Не назначать'.

Влияет ли параметр 'Количество ИБ на процесс = 1' на изоляцию?

Да, установка значения 1 гарантирует, что каждая информационная база кластера будет обслуживаться в собственном изолированном процессе rphost, исключая влияние сбоев одной базы на другую.

Полезные материалы
Рекомендуем