К статье
Практический материал

Администрирование · 9 мин

Shared memory в 1С: как включить разделяемую память

Как включить shared memory в кластере серверов 1С:Предприятие, зачем нужна разделяемая память, настройка параметра агента, проверка результата и типичные ошибки.

Разделяемая память (shared memory) в 1С — это механизм обмена данными между процессами кластера серверов 1С:Предприятие без использования сетевого стека. Когда рабочие процессы rphost, агент ragent и менеджер кластера rmngr обмениваются служебной информацией через общую область памяти, снижаются накладные расходы на сериализацию и передачу данных по TCP, что заметно ускоряет работу при высокой нагрузке.

Механизм особенно актуален для крупных внедрений, где на одном сервере работают десятки рабочих процессов и сотни сеансов пользователей. По умолчанию в ряде версий платформы использование разделяемой памяти отключено или ограничено, поэтому администратору нужно включить её явно — через параметры запуска агента сервера или настройки кластера.

Важно понимать: shared memory — это не настройка прикладного решения и не параметр информационной базы. Это уровень сервера 1С, и ошибки в конфигурации влияют на весь кластер сразу. Перед изменениями убедитесь, что у вас есть возможность перезапустить службу агента сервера вне рабочего времени и что вы понимаете, как откатить изменения.

Что такое shared memory в контексте 1С и когда она нужна

Кластер серверов 1С состоит из нескольких процессов: агент сервера (ragent), менеджер кластера (rmngr) и один или несколько рабочих процессов (rphost). Эти процессы постоянно обмениваются данными: менеджер распределяет соединения, рабочие процессы сообщают о своей загрузке, агент передаёт управляющие команды. Без разделяемой памяти этот обмен идёт через сокеты даже внутри одного физического сервера.

Разделяемая память позволяет процессам читать и писать данные в общую область оперативной памяти напрямую. Это устраняет затраты на копирование буферов и сетевые вызовы, снижает задержки и разгружает процессор. Эффект наиболее заметен при большом количестве сеансов, интенсивном обмене с СУБД и частых фоновых заданиях.

Включать shared memory имеет смысл, если сервер 1С и клиентские приложения работают на одной машине, если наблюдается высокая загрузка процессора процессами кластера при большом числе сеансов, или если диагностика показывает узкое место в межпроцессном взаимодействии. Для небольшой базы на 5–10 пользователей эффект будет минимальным.

Подготовка: что проверить перед включением

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

Убедитесь, что на сервере достаточно свободной оперативной памяти. Разделяемая память резервируется дополнительно к памяти рабочих процессов, и на сервере с дефицитом RAM включение механизма может ухудшить ситуацию из-за свопинга. Также проверьте, что у вас есть права администратора на сервере и возможность перезапускать службу агента.

Включение shared memory через параметры агента сервера

Основной способ управления разделяемой памятью — параметры командной строки агента сервера 1С. В Windows служба агента регистрируется с набором параметров, и их можно изменить, перерегистрировав службу или отредактировав параметры запуска. В Linux параметры задаются в скрипте запуска или unit-файле systemd.

Для изменения параметров в Windows удобнее всего остановить службу, удалить её регистрацию и зарегистрировать заново с нужными ключами. Утилита регистрации находится в каталоге bin установленной платформы. Ниже пример последовательности команд — конкретные ключи сверяйте с документацией вашей версии платформы, так как состав параметров может отличаться между релизами.

Порядок действий
  1. 1
    Остановите службу агента сервера 1С через services.msc или командой net stop
  2. 2
    Откройте командную строку от имени администратора и перейдите в каталог bin установленной платформы
  3. 3
    Удалите текущую регистрацию службы командой ragent -rmsrvc
  4. 4
    Зарегистрируйте службу заново с нужными параметрами, включая настройки разделяемой памяти
  5. 5
    Запустите службу и проверьте, что кластер поднялся и базы доступны
cmd
net stop "Агент сервера 1С:Предприятия 8.3"
cd "C:\Program Files\1cv8\<версия>\bin"
ragent -rmsrvc
ragent -instsrvc
net start "Агент сервера 1С:Предприятия 8.3"

Настройка через консоль администрирования кластера

Часть параметров, влияющих на межпроцессное взаимодействие, доступна в консоли администрирования серверов 1С (оснастка «Администрирование серверов 1С Предприятия»). Откройте консоль, подключитесь к агенту, разверните дерево кластера и проверьте свойства рабочего сервера и рабочих процессов.

В свойствах рабочего сервера обратите внимание на параметры, связанные с объёмом памяти и количеством процессов: максимальный объём памяти рабочих процессов, допустимый объём памяти за один вызов, количество процессов на сервер. Некорректные значения здесь могут нейтрализовать выигрыш от разделяемой памяти или, наоборот, привести к аварийным перезапускам процессов.

Проверка результата и контроль памяти

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

Контрольные точки

Как проверить результат

Доступность баз
Норма

Пользователи подключаются, сеансы активны в консоли кластера

Тревожный признак

Ошибки соединения с кластером, пустой список сеансов

Потребление памяти
Норма

Рост использования RAM умеренный, свободная память в резерве

Тревожный признак

Резкий рост потребления, активный свопинг, нехватка памяти

Журнал регистрации
Норма

Нет новых ошибок процессов rphost и ragent

Тревожный признак

Аварийные завершения рабочих процессов, ошибки выделения памяти

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

Типичные ошибки и ограничения

Типичные ошибки
01
Перерегистрация службы без сохранения старых параметров — при ошибке нечего откатывать, приходится восстанавливать конфигурацию по памяти
02
Включение на сервере с дефицитом RAM — разделяемая память резервируется дополнительно и провоцирует свопинг
03
Ожидание эффекта на маленькой базе — при нескольких пользователях выигрыш незаметен, а сложность администрирования растёт
04
Копирование ключей запуска из чужих инструкций без сверки с версией платформы — состав параметров отличается между релизами

Ещё одно ограничение: разделяемая память работает только внутри одного физического или виртуального сервера. Если кластер распределён на несколько машин, обмен между узлами всё равно идёт по сети, и shared memory ускоряет лишь локальное взаимодействие процессов на каждом узле.

На виртуальных машинах с агрессивным управлением памятью со стороны гипервизора (ballooning, динамическое выделение) резервирование разделяемой памяти может конфликтовать с политиками виртуализации. В таких средах тестируйте изменения особенно тщательно.

Маршрут решения

Как выбрать действие

Много сеансов, высокая загрузка CPU процессами кластера на одном сервереВключите shared memory и контролируйте потребление RAM
Сервер работает на пределе по памятиСначала добавьте RAM или снизьте число рабочих процессов, включение отложите
База небольшая, до 10–15 пользователейОставьте настройки по умолчанию — эффект не оправдает усилий
После включения появились аварийные перезапуски rphostОткатите параметры службы и проверьте обновления платформы

Частые вопросы

Ускорит ли shared memory работу клиентских приложений по сети?

Напрямую нет. Механизм ускоряет обмен данными между процессами кластера внутри сервера. Клиенты по сети почувствуют эффект только косвенно — если узким местом было именно межпроцессное взаимодействие на сервере.

Нужно ли перезапускать сервер целиком после изменения параметров?

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

Как отключить shared memory, если возникли проблемы?

Остановите службу агента, перерегистрируйте её с исходными параметрами запуска и снова запустите. Именно поэтому важно зафиксировать исходную командную строку службы до внесения изменений.

Влияет ли разделяемая память на работу с СУБД?

Обмен между сервером 1С и СУБД идёт отдельно и напрямую не меняется. Однако снижение накладных расходов внутри кластера может косвенно ускорить обработку запросов, инициированных сеансами.

Где посмотреть, используется ли разделяемая память сейчас?

Проверьте параметры запуска службы агента сервера (в Windows — через свойства службы в реестре или диспетчер задач с отображением командной строки) и сверьте их с документацией на вашу версию платформы.

Итог

Что важно запомнить

Shared memory в 1С включается на уровне агента сервера через параметры запуска службы и ускоряет обмен между процессами кластера. Перед изменениями зафиксируйте исходные параметры, убедитесь в запасе оперативной памяти и выполняйте работы вне рабочего времени с последующим контролем стабильности.