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

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

1С при обновлении: недостаточно памяти — что делать

Ошибка «недостаточно памяти» при обновлении 1С: разбираем причины, способы освободить память, настройку сервера 1С и SQL, обновление через конфигуратор по шагам.

Ошибка «Недостаточно памяти» при обновлении конфигурации 1С — одна из самых частых проблем администраторов. Она возникает как в файловых, так и в клиент-серверных базах и почти всегда означает одно: процессу платформы (или серверу СУБД) не хватает оперативной памяти или адресного пространства для выполнения тяжёлой операции — реструктуризации таблиц, загрузки конфигурации поставщика или сравнения и объединения.

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

Хорошая новость: в большинстве случаев проблему решают без привлечения сторонних специалистов. Нужно последовательно проверить разрядность платформы, объём свободной памяти, настройки сервера 1С и SQL Server, а при необходимости изменить сам порядок обновления — например, выполнять его поэтапно или через конфигуратор с выгрузкой базы.

Почему при обновлении 1С не хватает памяти

При обновлении конфигурации платформа выполняет ресурсоёмкие операции: загружает новую конфигурацию поставщика в память, сравнивает её с текущей, строит план реструктуризации и перестраивает таблицы базы данных. На больших базах (десятки гигабайт) и типовых конфигурациях вроде ERP или «Комплексной автоматизации» потребление памяти процессом может вырасти в несколько раз по сравнению с обычной работой.

Основные причины ошибки:

  • 32-разрядная платформа. Процесс 1cv8.exe (или rphost на сервере) ограничен примерно 2 ГБ адресного пространства, и на крупных обновлениях упирается в этот предел независимо от объёма ОЗУ на компьютере.
  • Физическая нехватка ОЗУ. На сервере параллельно работают SQL Server, антивирус, другие службы — для rphost остаётся мало памяти.
  • Обновление через несколько релизов сразу. Платформа загружает промежуточные конфигурации последовательно, и пиковое потребление памяти растёт.
  • Нехватка места на диске. Временные файлы, журналы транзакций SQL и файлы реструктуризации требуют свободного пространства, иногда сопоставимого с размером базы.
  • Фоновые и регламентные задания, которые запускаются во время обновления и отнимают память у рабочего процесса.
Ошибка на клиенте при запуске обновленияПроблема на стороне клиентского компьютера

Разрядность платформы и объём ОЗУ на машине, с которой запущено обновление

Ошибка с упоминанием rphost или сервераПамять заканчивается на сервере 1С

Нагрузку на сервер, настройки кластера, параллельные процессы

Ошибка на этапе реструктуризацииТяжёлая операция над таблицами БД

Свободное место на диске и память сервера СУБД

Ошибка при загрузке cf-файлаНе хватает памяти на чтение конфигурации

Разрядность конфигуратора, размер файла обновления

Первые действия: что проверить до изменения настроек

Начните с простых проверок — они решают проблему в значительной части случаев и не требуют остановки работы пользователей надолго.

Во-первых, определите разрядность платформы. Откройте «Диспетчер задач» во время обновления: если процесс 1cv8.exe помечен как 32-разрядный (или в «Сведениях о программе» указана x86-версия), а база крупная — это почти наверняка причина. Установите 64-разрядную версию платформы той же или более новой версии и повторите обновление через неё.

Во-вторых, проверьте свободную память и диск. На компьютере, где выполняется обновление, должно быть свободно минимум несколько гигабайт ОЗУ, а на диске с базой и временными файлами — пространство, сопоставимое с размером самой базы. Закройте лишние приложения, перезагрузите сервер перед обновлением, если он работает долго без перезапуска.

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

Базовый порядок действий
  1. 1
    Сделайте резервную копию базы (выгрузка в .dt или средствами СУБД)
  2. 2
    Проверьте разрядность платформы и при необходимости установите 64-разрядную версию
  3. 3
    Завершите сеансы пользователей и отключите регламентные задания
  4. 4
    Освободите память: закройте сторонние приложения, при возможности перезагрузите сервер
  5. 5
    Проверьте свободное место на дисках с базой, temp и журналами транзакций
  6. 6
    Повторите обновление и наблюдайте за потреблением памяти в диспетчере задач

Обновление через конфигуратор вместо автоматического режима

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

Порядок действий: откройте базу в конфигураторе, выберите «Конфигурация — Поддержка — Обновить конфигурацию», укажите файл обновления (.cfu) или полную конфигурацию (.cf). Перед запуском убедитесь, что конфигуратор запущен именно 64-разрядной версии платформы — это критично для крупных баз.

Обновление поэтапно, через промежуточные релизы

Если база отстаёт от актуального релиза на несколько версий, не обновляйтесь «в один прыжок». Установите промежуточные релизы последовательно: каждый шаг требует заметно меньше памяти, чем накопительное обновление. Перед каждым шагом проверяйте, что предыдущий завершился успешно, и делайте промежуточную копию.

Загрузка полной конфигурации вместо cfu

В тяжёлых случаях помогает приём: вместо файла обновления загрузить полную конфигурацию поставщика (.cf) через «Конфигурация — Загрузить конфигурацию из файла», а затем выполнить сравнение и объединение. Иногда также помогает предварительная выгрузка базы в .dt и загрузка её в новую пустую базу на машине с большим объёмом памяти — обновление выполняется там, после чего база возвращается на рабочий сервер.

Настройка сервера 1С и SQL Server

В клиент-серверном варианте память чаще всего заканчивается у рабочего процесса rphost. Если на сервере один рабочий процесс обслуживает все сеансы и обновление, его потребление может достигать десятков гигабайт на больших базах.

Что можно настроить в консоли кластера серверов 1С:

  • Увеличьте число рабочих процессов, чтобы нагрузка распределялась между ними.
  • Ограничьте объём памяти на рабочий процесс (параметр «Допустимый объем памяти») — это защитит сервер от полного исчерпания ОЗУ, но на время обновления лимит стоит временно увеличить или снять.
  • На время обновления переведите базу в режим, исключающий запуск регламентных заданий.

Со стороны SQL Server проверьте ограничение максимальной памяти сервера: если SQL Server настроен забирать почти всю ОЗУ, серверу 1С не остаётся ресурса. Оставьте операционной системе и rphost достаточный запас. Также убедитесь, что на диске с tempdb и журналами транзакций достаточно места — реструктуризация больших таблиц активно использует оба ресурса.

Полезно наблюдать за потреблением памяти процессом rphost или 1cv8.exe в диспетчере задач во время обновления. Если график упирается в потолок и растёт скачкообразно без завершения этапа — проблема именно в нехватке памяти. Если процесс падает резко при стабильном потреблении — стоит искать ошибку в технологическом журнале, причина может быть в повреждении данных или конкретном объекте конфигурации.
ПЗ
Практическое замечание

Если памяти всё равно не хватает: альтернативные способы

Когда штатные методы не помогают, а увеличить объём ОЗУ на текущем сервере нельзя, есть обходные пути.

Первый вариант — выполнить обновление на другом, более мощном компьютере. Выгрузите базу в файл .dt, разверните её на машине с 64-разрядной платформой и достаточным объёмом памяти, выполните обновление там, затем выгрузите обновлённую базу и загрузите обратно. Способ трудоёмкий, но надёжный для файловых баз.

Второй вариант — временно увеличить файл подкачки Windows. Это не заменяет ОЗУ и замедляет процесс, но позволяет 32-разрядным сценариям и пограничным случаам завершиться. Для серьёзных обновлений это скорее «план Б», чем постоянное решение.

Третий вариант — использовать утилиту конфигуратора в пакетном режиме (запуск 1cv8.exe с параметрами командной строки DESIGNER и /UpdateCfg). Пакетный режим иногда потребляет меньше памяти, чем интерактивный, и позволяет автоматизировать поэтапное обновление скриптом.

Сравнение вариантов решения

Переход на 64-разрядную платформу

Основное и правильное решение для большинства случаев; требует установки новой версии платформы на клиенте и сервере

Обновление на отдельной мощной машине

Подходит, когда сервер нельзя останавливать или расширять; требует выгрузки и загрузки базы, занимает больше времени

Поэтапное обновление через промежуточные релизы

Снижает пиковое потребление памяти; дольше по времени, нужны дистрибутивы промежуточных версий

Увеличение файла подкачки

Временный обходной путь; замедляет обновление и не помогает при упоре в лимит 32-разрядного процесса

Типичные ошибки и риски

Самая опасная ошибка — повторный запуск обновления после сбоя без проверки состояния базы. Если реструктуризация прервалась на середине, база может оказаться в неконсистентном состоянии. Перед повторной попыткой запустите тестирование и исправление (chdbfl для файловых баз) или восстановите базу из копии.

Другие распространённые ошибки:

  • Обновление при работающих пользователях — рост потребления памяти и риск взаимоблокировок.
  • Игнорирование свободного места на диске: ошибка выглядит как сбой памяти, но причина — переполненный диск с tempdb или каталогом временных файлов.
  • Антивирус, проверяющий файлы базы и временные файлы платформы в реальном времени, — добавьте каталоги 1С в исключения.
  • Обновление «через десяток релизов» одним файлом вместо поэтапной установки.

Как проверить, что обновление завершилось успешно

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

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

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

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

Версия конфигурации в разделе «О программе»
Норма

Соответствует целевому релизу

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

Версия старая — обновление фактически не применилось

Журнал регистрации за время обновления
Норма

Нет ошибок реструктуризации и обработчиков обновления

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

Ошибки обновления данных — требуется анализ и повторный запуск обработчиков

Работа типовых операций (документы, отчёты)
Норма

Документы проводятся, отчёты формируются

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

Ошибки при обращении к данным — возможна незавершённая реструктуризация

Тестирование и исправление базы
Норма

Проверка проходит без ошибок

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

Найдены ошибки — восстановите копию и повторите процедуру

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

Хватит ли 8 ГБ ОЗУ для обновления 1С?

Для небольших файловых баз и лёгких конфигураций — обычно да, при условии 64-разрядной платформы и отсутствия параллельной нагрузки. Для крупных баз ERP или клиент-серверных внедрений этого может быть мало: потребление рабочего процесса при реструктуризации больших таблиц исчисляется десятками гигабайт. Ориентируйтесь на фактическое потребление в диспетчере задач во время обновления.

Почему ошибка возникает, хотя на сервере много свободной памяти?

Наиболее вероятная причина — 32-разрядный процесс: он не может использовать больше примерно 2 ГБ независимо от объёма ОЗУ. Также проверьте ограничение памяти рабочего процесса в настройках кластера 1С и лимит памяти SQL Server — искусственные ограничения действуют даже при физическом запасе памяти.

Можно ли обновлять базу, пока работают пользователи?

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

Что делать, если обновление прервалось на реструктуризации?

Не запускайте обновление повторно и не открывайте базу для работы. Восстановите базу из резервной копии, устраните причину нехватки памяти (разрядность, ОЗУ, место на диске) и только после этого повторите обновление. Если копии нет, сначала выполните тестирование и исправление, но результат не гарантирован.

Помогает ли увеличение файла подкачки?

Частично: файл подкачки позволяет процессу выйти за пределы физической ОЗУ, но не снимает лимит адресного пространства 32-разрядного приложения. Для 64-разрядной платформы это временная мера на пограничных случаях; обновление будет идти заметно медленнее.

Как уменьшить потребление памяти при обновлении через несколько релизов?

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

Итог

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

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