Администрирование · 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С через services.msc или командой net stop
- 2Откройте командную строку от имени администратора и перейдите в каталог bin установленной платформы
- 3Удалите текущую регистрацию службы командой ragent -rmsrvc
- 4Зарегистрируйте службу заново с нужными параметрами, включая настройки разделяемой памяти
- 5Запустите службу и проверьте, что кластер поднялся и базы доступны
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
Аварийные завершения рабочих процессов, ошибки выделения памяти
Полезно понаблюдать за системой несколько дней под реальной нагрузкой. Разделяемая память не должна вызывать утечек, но в сочетании с ошибками конкретной версии платформы возможны проблемы — в этом случае проверьте наличие обновлений платформы или отключите механизм, вернув исходные параметры службы.
Типичные ошибки и ограничения
Ещё одно ограничение: разделяемая память работает только внутри одного физического или виртуального сервера. Если кластер распределён на несколько машин, обмен между узлами всё равно идёт по сети, и shared memory ускоряет лишь локальное взаимодействие процессов на каждом узле.
На виртуальных машинах с агрессивным управлением памятью со стороны гипервизора (ballooning, динамическое выделение) резервирование разделяемой памяти может конфликтовать с политиками виртуализации. В таких средах тестируйте изменения особенно тщательно.
Как выбрать действие
Частые вопросы
Ускорит ли shared memory работу клиентских приложений по сети?
Напрямую нет. Механизм ускоряет обмен данными между процессами кластера внутри сервера. Клиенты по сети почувствуют эффект только косвенно — если узким местом было именно межпроцессное взаимодействие на сервере.
Нужно ли перезапускать сервер целиком после изменения параметров?
Достаточно перезапустить службу агента сервера 1С, перезагрузка операционной системы не требуется. Учтите, что перезапуск службы разрывает все активные сеансы пользователей.
Как отключить shared memory, если возникли проблемы?
Остановите службу агента, перерегистрируйте её с исходными параметрами запуска и снова запустите. Именно поэтому важно зафиксировать исходную командную строку службы до внесения изменений.
Влияет ли разделяемая память на работу с СУБД?
Обмен между сервером 1С и СУБД идёт отдельно и напрямую не меняется. Однако снижение накладных расходов внутри кластера может косвенно ускорить обработку запросов, инициированных сеансами.
Где посмотреть, используется ли разделяемая память сейчас?
Проверьте параметры запуска службы агента сервера (в Windows — через свойства службы в реестре или диспетчер задач с отображением командной строки) и сверьте их с документацией на вашу версию платформы.
Что важно запомнить
Shared memory в 1С включается на уровне агента сервера через параметры запуска службы и ускоряет обмен между процессами кластера. Перед изменениями зафиксируйте исходные параметры, убедитесь в запасе оперативной памяти и выполняйте работы вне рабочего времени с последующим контролем стабильности.