Пользователи открывают 1С и видят: «На сервере недостаточно памяти». Базы тормозят, документы проводятся минутами, а при пиковой нагрузке сервер и вовсе перестаёт отвечать. Ошибка означает одно: рабочие процессы rphost потребляют больше оперативной памяти, чем доступно на сервере.
Причин пять: от банальной нехватки RAM до неконтролируемых утечек памяти в rphost. Разберём каждую с конкретной диагностикой и решением.
Причина 1 — физически мало оперативной памяти на сервере
Самая очевидная и частая причина. Сервер с 8-16 ГБ RAM работает нормально с 5 пользователями. Подключаются ещё 10 — и памяти не хватает. Каждый рабочий процесс rphost занимает от 500 МБ до 4 ГБ. Плюс SQL Server, ОС, антивирус, RDP-сессии администраторов.
Диагностика
На Windows откройте Диспетчер задач → вкладка Производительность → Память. Обратите внимание на «Используется» и «Доступно». Если доступно менее 10% от общего объёма — это подтверждение проблемы.
На Linux выполните команду:
free -m
Смотрите строку «available». Если значение ниже 1-2 ГБ при работающей 1С — памяти критически мало.
Решение
Добавьте оперативную память. Для серверов 1С с архитектурой SQL используйте ECC-модули — они исправляют одиночные битовые ошибки и предотвращают порчу данных. В требованиях к серверу для 1С описаны рекомендуемые объёмы по числу пользователей.
Краткие рекомендации по объёму RAM:
| Пользователей | Минимум RAM | Рекомендуется |
|---|---|---|
| до 10 | 16 ГБ | 32 ГБ |
| 10-30 | 32 ГБ | 64 ГБ |
| 30-50 | 64 ГБ | 128 ГБ |
| 50-100 | 128 ГБ | 256 ГБ |
| 100+ | 256 ГБ | 512 ГБ |
Если сервер не поддерживает расширение RAM — пора менять платформу. Подробная методика подбора — в руководстве по подбору сервера для 1С.
Причина 2 — утечка памяти в рабочих процессах rphost
rphost может «течь» — потреблять всё больше памяти и не освобождать её. Это происходит при длительных расчётах, обработке больших документов, работе с COM-объектами или при ошибках в коде конфигурации. Один rphost разрастается до 8-12 ГБ и вытесняет всё остальное.
Диагностика
Откройте Диспетчер задач → вкладка Подробности. Найдите процессы rphost.exe. Отсортируйте по столбцу «Память». Если один из rphost потребляет 6+ ГБ, а остальные — по 500 МБ — это утечка.
Альтернатива — утилита rac:
rac process --cluster=<cluster-uuid> list
В выводе смотрите поле memory-size — оно показывает потребление памяти каждым rphost в килобайтах.
Решение
Настройте автоматический контроль памяти в свойствах кластера серверов 1С:
- Допустимый объём памяти — установите 4 000 000 КБ (4 ГБ). При превышении rphost перезапустится автоматически.
- Интервал перезапуска — 86400 секунд (24 часа). Процессы перезапускаются ежесуточно в период минимальной нагрузки.
- Принудительное завершение проблемных процессов — включить. Зависшие rphost не будут занимать память бесконечно.
Через утилиту rac:
rac cluster update --cluster=<cluster-uuid> --lifetime-limit=86400 --memory-limit=4000000 --kill-problem-processes=1
Для экстренного освобождения памяти перезапустите конкретный rphost через консоль администрирования серверов 1С. Если утечки повторяются регулярно — проблема скорее всего в коде конфигурации. Проверьте обработки с длинными циклами и COM-объекты, которые не освобождаются.
Причина 3 — СУБД потребляет всю доступную память
SQL Server по умолчанию забирает всю доступную память и не отдаёт. Это поведение по дизайну: SQL Server кеширует данные и планы запросов в оперативной памяти для ускорения работы. Но если не ограничить потребление — rphost и другим процессам просто не останется RAM.
Диагностика
Откройте SQL Server Management Studio (SSMS). Выполните запрос:
SELECT
physical_memory_in_use_kb / 1024 AS sql_memory_mb,
total_virtual_address_space_kb / 1024 AS total_virtual_mb
FROM sys.dm_os_process_memory;
Если sql_memory_mb близко к общему объёму RAM сервера — SQL Server забрал почти всё. Проверьте текущий лимит:
EXEC sp_configure 'max server memory';
Если значение run_value = 2147483647 (максимум) — ограничение не задано.
Решение
Ограничьте SQL Server. Формула: общий RAM минус 4 ГБ на ОС минус резерв на rphost. Пример для сервера с 64 ГБ:
-- 64 ГБ минус 4 ГБ ОС минус 16 ГБ на rphost = 44 ГБ для SQL
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory', 45056; -- 44 ГБ в МБ
RECONFIGURE;
Рекомендуемые лимиты max server memory:
| RAM сервера | max server memory | Остаётся на ОС + 1С |
|---|---|---|
| 16 ГБ | 8 ГБ (8192 МБ) | 8 ГБ |
| 32 ГБ | 20 ГБ (20480 МБ) | 12 ГБ |
| 64 ГБ | 44 ГБ (45056 МБ) | 20 ГБ |
| 128 ГБ | 96 ГБ (98304 МБ) | 32 ГБ |
Подробнее о настройке SQL Server для 1С — в руководстве по оптимизации MS SQL Server.
Причина 4 — слишком много сеансов и фоновых заданий
Каждый сеанс пользователя потребляет память в rphost. Фоновые задания (регламентные операции, обмены, обновления) работают в тех же рабочих процессах. 20 пользователей плюс 15 фоновых заданий — сервер обслуживает 35 потребителей памяти одновременно.
Диагностика
Проверьте количество сеансов через консоль кластера серверов 1С. Перейдите в Кластеры → Сеансы. Обратите внимание на столбец «Тип» — здесь отображаются и пользовательские сеансы, и фоновые задания.
Через rac:
rac session --cluster=<cluster-uuid> list
rac session --cluster=<cluster-uuid> list | grep -c "background-job"
Если фоновых заданий больше 10-15 — они существенно нагружают память.
Решение
- Ограничьте количество сеансов на rphost. В свойствах рабочего сервера задайте «Количество соединений на процесс» — например, 50. При достижении лимита кластер создаст новый rphost
- Разнесите фоновые задания. Выделите отдельный rphost для фоновых заданий. В настройках кластера назначьте требования к присвоению для рабочего сервера
- Отключите ненужные регламентные задания. Откройте конфигуратор → Администрирование → Регламентные задания. Отключите дублирующиеся задания по обмену, неиспользуемые рассылки и избыточные проверки
- Запланируйте тяжёлые операции на ночь. Пересчёт итогов, полнотекстовая индексация и обмены — на нерабочее время, когда память не нужна пользователям
Причина 5 — файл подкачки отключён или слишком мал
Файл подкачки (pagefile) — страховка при нехватке физической памяти. Если он отключён или мал, Windows не сможет выгрузить неиспользуемые страницы из RAM. При достижении лимита физической памяти процессы начнут получать ошибки выделения памяти.
Диагностика
Откройте Система → Дополнительные параметры системы → Быстродействие → Параметры → Дополнительно → Виртуальная память. Проверьте:
- Включён ли файл подкачки
- На каком диске он расположен (должен быть на системном SSD, не на медленном HDD)
- Размер: начальный и максимальный
Решение
Задайте фиксированный размер файла подкачки. Microsoft рекомендует: начальный размер = объём RAM, максимальный = 1.5× RAM. Для серверов 1С используйте фиксированный размер, равный объёму RAM:
| RAM сервера | Файл подкачки (фиксированный) |
|---|---|
| 16 ГБ | 16 ГБ |
| 32 ГБ | 32 ГБ |
| 64 ГБ | 64 ГБ |
| 128 ГБ | 64-128 ГБ |
Фиксированный размер предотвращает фрагментацию файла подкачки. Расположите его на отдельном от баз данных диске — так активная запись в pagefile не замедлит работу СУБД.
Сколько памяти нужно серверу 1С
Точный объём зависит от числа пользователей, размера баз и типа конфигурации. Наши тесты показывают: 128 ГБ ECC — проверенный стандарт для 30-50 пользователей. Вот рекомендации по распределению памяти между компонентами:
| Компонент | 10 пользователей | 30 пользователей | 50 пользователей | 100 пользователей |
|---|---|---|---|---|
| ОС + службы | 4 ГБ | 4 ГБ | 4 ГБ | 8 ГБ |
| rphost (рабочие процессы) | 4 ГБ | 12 ГБ | 24 ГБ | 64 ГБ |
| SQL Server | 8 ГБ | 20 ГБ | 44 ГБ | 96 ГБ |
| Запас | — | — | — | 32+ ГБ |
| Итого | 16 ГБ | 32-64 ГБ | 64-128 ГБ | 256+ ГБ |
Эти цифры — для типовых конфигураций (Бухгалтерия, ERP, Управление торговлей). Тяжёлые конфигурации с отчётами на миллионы строк потребуют больше. Подробнее — в статье о подборе сервера по числу пользователей.
Как предотвратить ошибку нехватки памяти
Три направления: мониторинг, лимиты, регулярное обслуживание.
Мониторинг
- Счётчики производительности Windows: отслеживайте «Available MBytes» (свободная RAM). Настройте оповещение при падении ниже 2 ГБ
- Потребление rphost: мониторьте размер каждого rphost. Рост выше 4 ГБ — сигнал утечки
- SQL Server: проверяйте значение
Buffer cache hit ratio. Если ниже 95% — SQL Server не хватает памяти для кеша
Лимиты
- max server memory в SQL Server — ограничьте по таблице выше
- Допустимый объём памяти в кластере 1С — 4 ГБ на rphost
- Количество соединений на процесс — не более 50-100
Регулярное обслуживание
- Перезапуск рабочих процессов каждые 24 часа. Сбрасывает накопленные утечки
- Очистка кеша сервера 1С. Папка
reg_1541\snccntx*растёт со временем — периодически очищайте при остановленной службе - Регулярные бэкапы. Перед любыми изменениями настроек — резервная копия базы. Изменение параметров памяти может потребовать перезапуска сервера
Если ничего не помогло
Вы проверили все пять причин, настроили лимиты и добавили RAM — а ошибка повторяется? Возможно, проблема в архитектуре вашей информационной системы: слишком тяжёлая конфигурация, нестандартные обработки или неоптимальные запросы к базе. Оставьте заявку — проведём диагностику вашего сервера.
Вопросы и ответы
Почему сервер 1С пишет «недостаточно памяти», хотя RAM установлено 64 ГБ?
64 ГБ — это общий объём. SQL Server по умолчанию забирает всю доступную память. Если не ограничить потребление через параметр max server memory, на рабочие процессы 1С и ОС ничего не останется. Задайте лимит: для 64 ГБ рекомендуется max server memory = 44 ГБ.
Как узнать, какой процесс потребляет больше всего памяти?
Откройте Диспетчер задач → Подробности. Отсортируйте процессы по столбцу «Память». Обратите внимание на rphost.exe (рабочие процессы 1С) и sqlservr.exe (SQL Server). Если один rphost потребляет 6+ ГБ — это утечка памяти. Настройте лимит в свойствах кластера: «Допустимый объём памяти» = 4 ГБ.
Можно ли решить проблему нехватки памяти без добавления RAM?
Да, частично. Ограничьте SQL Server (max server memory), настройте автоперезапуск rphost каждые 24 часа, отключите ненужные фоновые задания, перенесите тяжёлые регламентные операции на ночь. Но если физической памяти менее 16 ГБ при 20+ пользователях — без расширения RAM не обойтись.
Сколько RAM занимает один пользователь 1С?
В среднем один активный сеанс 1С потребляет 200-500 МБ RAM в рабочем процессе rphost. Тяжёлые операции (формирование отчётов, проведение крупных документов) — до 1-2 ГБ. Фоновые задания потребляют память аналогично пользовательским сеансам. При планировании закладывайте 500 МБ на пользователя для rphost плюс память на SQL Server и ОС.
Нужен ли файл подкачки на сервере 1С с большим объёмом RAM?
Да. Даже при 128 ГБ RAM файл подкачки необходим. Windows использует его для выгрузки неактивных страниц памяти и создания дампов при сбоях. Без файла подкачки при нехватке RAM процессы получат ошибку вместо замедления. Рекомендуемый размер — равен объёму RAM, расположен на SSD.
Как настроить автоматический перезапуск рабочих процессов 1С?
Откройте консоль администрирования серверов 1С. Правый клик по кластеру → Свойства. Задайте «Интервал перезапуска» = 86400 секунд (24 часа) и «Допустимый объём памяти» = 4 000 000 КБ (4 ГБ). Через rac: rac cluster update —cluster= —lifetime-limit=86400 —memory-limit=4000000 —kill-problem-processes=1.
Что лучше: добавить RAM или разнести 1С и SQL на разные серверы?
Зависит от нагрузки. До 50 пользователей дешевле и проще добавить RAM на один сервер. От 50 пользователей разделение 1С и SQL на разные серверы даёт гибкость: каждому компоненту — свой объём памяти без конкуренции. Но это усложняет администрирование и требует быстрой сети (10 Гбит) между серверами.
Итог
Ошибка «На сервере недостаточно памяти» в 1С решается системно. Проверьте пять направлений: физический объём RAM, утечки в rphost, лимиты SQL Server, количество сеансов и фоновых заданий, настройки файла подкачки. В 80% случаев причина — отсутствие ограничения max server memory в SQL Server и отключённый перезапуск рабочих процессов.
Не знаете, какой объём памяти нужен вашему серверу? Зависит от числа пользователей, конфигурации и нагрузки. Оставьте заявку — подберём конфигурацию под ваши задачи.