Как правильно настроить ограничение потребления памяти на сервере 1С:Предприятие 8.3?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Администраторы серверов 1С часто сталкиваются с ситуацией, когда рабочие процессы rphost.exe начинают бесконтрольно потреблять оперативную память (ОЗУ) физического сервера. Это приводит к сильным зависаниям операционной системы, медленной работе пользователей, а в худших случаях — к аварийному завершению работы СУБД и самого сервера 1С. В этой статье мы подробно разберем, как устроена модель управления памятью в платформе 1С:Предприятие 8.3, почему стандартные ограничения в консоли администрирования могут не работать, и как правильно настроить сервер под ваши задачи.

Проблема избыточного потребления памяти процессами 1С

Выделение памяти под нужды 1С — процесс динамический. Платформа устроена так, что при выполнении «тяжелых» запросов, формировании сложных отчетов или запуске объемных фоновых заданий (например, закрытие месяца или проведение документов) рабочий процесс rphost захватывает доступную память сервера. Основная сложность заключается в том, что после завершения операции 1С не всегда спешит возвращать эту память операционной системе. В результате процессы «раздуваются», занимая весь доступный объем ОЗУ.

Давайте разберем по шагам, какие параметры в консоли администрирования кластера 1С отвечают за лимиты памяти, как их правильно рассчитать и внедрить.

Разбираемся в архитектуре: Кластер против Рабочего процесса

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

  1. Максимальный объем памяти рабочих процессов (задается в свойствах всего кластера). Этот параметр определяет суммарный лимит ОЗУ, который могут использовать все рабочие процессы rphost вместе взятые. Измеряется этот параметр в байтах. Если лимит превышен, сервер начнет принудительно завершать наиболее прожорливые сеансы или процессы.
  2. Временно допустимый объем памяти процессов. Это лимит для одного процесса rphost. Задается в килобайтах (КБ). Если процесс превышает это значение в течение заданного интервала времени (параметр «Интервал превышения допустимого объема памяти»), сервер 1С мягко перезапускает этот рабочий процесс: новые соединения на него не принимаются, а старые постепенно переносятся на новые процессы.
  3. Безопасный расход памяти за один вызов. Определяет, какой максимальный объем ОЗУ сервер может выделить под выполнение одного клиентского запроса (например, одного отчета). Если запрос превышает этот лимит, операция аварийно прерывается, но сам процесс rphost не падает.

Важное замечание по единицам измерения: Будьте предельно внимательны! В разных диалоговых окнах консоли 1С используются разные единицы измерения. Максимальный объем памяти рабочих процессов для кластера задается в байтах, а временно допустимый объем для процессов — в килобайтах (КБ). Ошибка в расчетах нулей может привести к тому, что сервер 1С моментально заблокирует работу пользователей с ошибкой Недостаточно свободной памяти на сервере 1С.

Тонкая настройка процессов rphost: Количество ИБ и соединений

В свойствах рабочего сервера есть два крайне важных параметра, влияющих на стабильность работы и распределение памяти:

Рассмотрим ситуацию: если установить параметр Количество ИБ на процесс равным 1, то для каждой информационной базы на сервере будет создаваться отдельный процесс rphost. С одной стороны, это повышает отказоустойчивость: если одна база зависнет или «вылетит» по памяти, это не затронет пользователей других баз. С другой стороны, это порождает огромное количество процессов rphost, каждый из которых требует накладных расходов памяти на запуск (около 500-700 МБ в режиме простоя). Для серверов с небольшим объемом ОЗУ (например, до 32 ГБ) и количеством пользователей до 30-50 человек такая схема категорически противопоказана.

Рекомендуется придерживаться стандартных значений: 8 информационных баз на процесс и 128 соединений. Разделение «1 база = 1 процесс» оправдано только на серверах разработки или крупных промышленных внедрениях с объемом ОЗУ от 128 ГБ и выше.

Лицензионные ограничения: Ловушка ПРОФ и КОРП

Начиная с версий платформы 8.3.12.1852 и 8.3.14.1592, фирма «1С» ввела жесткий технический контроль лицензий уровней ПРОФ и КОРП. Настройки гибкого управления нагрузкой и лимитами памяти теперь жестко разделены:

Для корректной работы сервера 1С на лицензиях ПРОФ все эти параметры в консоли администрирования должны строго быть установлены в значение 0 (что означает автоматический расчет платформой).

Важное нововведение начиная с версии 8.3.19: Чтобы повысить стабильность систем уровня ПРОФ, фирма «1С» вернула для этих лицензий возможность редактировать параметр Временно допустимый объем памяти процессов. Теперь при достижении этого лимита сервер прерывает конкретный «тяжелый» вызов пользователя, выдавая ему ошибку, но при этом сам рабочий процесс не падает, сохраняя работоспособность всей системы.

Как настроить ограничения на лицензиях ПРОФ

Поскольку тонкие лимиты на лицензиях ПРОФ заблокированы, системным администраторам приходится использовать альтернативные и проверенные временем методы контроля ОЗУ. При реализации этих и других базовых сценариев настройки ОС может пригодиться структурированная справка по администрированию Windows, Linux и 1С.

Способ 1: Настройка перезапуска рабочих процессов (Штатный метод 1С)

Это самый безопасный способ борьбы с утечками памяти на лицензиях ПРОФ. Мы настраиваем сервер так, чтобы процессы rphost регулярно обновлялись в фоновом режиме, не мешая активным пользователям.

Рекомендуется установить следующие параметры в свойствах локального кластера:

Способ 2: Ограничение памяти на уровне операционной системы Windows

Если сервер 1С и СУБД (например, MS SQL Server) развернуты на одном физическом сервере, крайне важно жестко разграничить ресурсы между ними. СУБД по умолчанию стремится забрать всю доступную память под свой кэш.

Для MS SQL Server обязательно ограничьте максимальный объем ОЗУ через среду СУБД:

  1. Откройте SQL Server Management Studio (SSMS).
  2. Перейдите в свойства сервера -> вкладка «Память» (Memory).
  3. Установите значение Максимальный размер памяти сервера (Max Server Memory) так, чтобы операционной системе и процессам 1С гарантированно оставалось не менее **20-30%** от общего объема ОЗУ (но не менее 4-8 ГБ).

Для жесткого ограничения процессов rphost.exe в Windows можно использовать встроенный функционал Windows System Resource Manager (WSRM) или создавать специализированные сценарии с технологией Job Objects, которые будут блокировать выделение памяти процессу сверх установленного лимита.

Способ 3: Ограничение на уровне Linux (cgroups)

Если ваш сервер 1С работает под управлением операционной системы Linux (Ubuntu, CentOS, Astra Linux), ограничение памяти настраивается очень элегантно и надежно через механизм cgroups в конфигурационном файле службы systemd.

Рассмотрим пример настройки ограничения службы сервера 1С до 16 ГБ ОЗУ. Для этого отредактируем файл службы 1С (например, srv1cv83.service):


[Service]
Type=simple
User=usr1cv8
Group=grp1cv8
ExecStart=/opt/1C/v8.3/x86_64/ragent -daemon
MemoryAccounting=true
MemoryMax=16G
MemoryLimit=16G

После внесения изменений необходимо применить конфигурацию и перезапустить службу:


systemctl daemon-reload
systemctl restart srv1cv83

Этот метод гарантирует, что операционная система Linux жестко пресечет попытки процессов 1С занять памяти больше, чем указано в лимите, и предотвратит падение сервера в глубокий своп (swap).

Мониторинг утечек памяти в реальном времени

Начиная с версии платформы 8.3.20, у системных администраторов отпала необходимость гадать, какой именно пользователь или регламентное задание перегружает систему. В консоли администрирования 1С в списке активных сеансов появились две долгожданные колонки:

Выясним причину зависания за пару кликов: достаточно открыть список сеансов, отсортировать его по колонке текущей или пиковой памяти, найти «виновника» (например, пользователя, запустившего тяжелый неоптимизированный отчет) и принудительно завершить только его конкретный сеанс. При этом общий рабочий процесс rphost продолжит стабильно обслуживать остальных пользователей. Для оперативного удаленного контроля сеансов и процессов через браузер также можно использовать веб-приложение для администрирования и завершения рабочих процессов сервера 1С.

← На главную