Обновление 1С падает с «Недостаточно памяти»: причины и лечение
Содержание
Если при обновлении вылетает Недостаточно памяти, чаще всего 1С упирается не в оперативную память компьютера, а в потолок одного процесса. Запустите обновление в 64-разрядном клиенте, закройте всё лишнее и повторите. В большинстве случаев этого хватает.
Когда не хватило, причина лежит в одном из четырёх мест: разрядность платформы, файл подкачки, лимиты рабочих процессов сервера или слишком большой скачок между релизами. Ниже каждое проверяется по очереди, от простого к радикальному. Так при ошибке 1С «недостаточно памяти » при обновлении 8.3 вы не потратите вечер на то, что лечится одной галочкой.
Прежде чем что-то менять, сделайте копию базы. Для файловой — скопируйте папку с файлом 1Cv8.1CD, для серверной — выгрузите .dt или сделайте бэкап СУБД. Обновление на «убитой» ошибкой базе без копии не откатить.
Как выглядит ошибка и где она возникает
Текст бывает разным, смысл один:
Недостаточно памятиНедостаточно памяти для завершения операцииОшибка при выполнении операции с информационной базой. Недостаточно памяти- окно с крестиком и закрытие 1С без сообщения (так процесс падает, когда память кончилась совсем)
Важно понять, где именно падает. От этого зависит лечение.
| Где упало | Что это значит | Куда смотреть |
|---|---|---|
| Клиент или конфигуратор, файловая база | Кончилась память процесса 1cv8 | Разрядность, другие программы, кэш |
| Клиент, серверная база | Клиент в норме, не хватает серверной стороны | Лимиты rphost, память сервера |
| Конфигуратор, «Обновить конфигурацию» | Тяжёлая реструктуризация таблиц | Шаги обновления, размер базы |
| Сразу при открытии, до обновления | Проблема не в обновлении | Кэш, профиль пользователя |
Первая проверка: разрядность 1С
Это причина номер один. 32-разрядный процесс не может занять больше нескольких гигабайт, сколько бы ОЗУ ни стояло в компьютере. Для тяжёлых операций реструктуризации этого мало. 64-разрядный клиент ограничений такого рода не имеет.
Как проверить:
- Откройте диспетчер задач, вкладка «Подробности».
- Найдите процесс
1cv8.exe(или1cv8c.exeдля тонкого клиента ). - В Windows 10 и новее колонка «Архитектура» покажет
x86илиx64. Если колонки нет, добавьте её через правый клик по заголовку.
Если у вас x86, поставьте 64-разрядную платформу той же версии и запустите обновление ею. Установщик платформы содержит оба варианта, нужная галочка стоит в списке компонентов.
На ярлыке запуска можно сразу выбрать нужную версию: в списке баз кнопка «Изменить», пункт «Версия 1С:Предприятия» и значение с пометкой x86-64.
Для серверных баз всё то же самое относится к кластеру: служба ragent должна быть из 64-разрядной установки. Проверьте путь в свойствах службы.
Что освободить и почистить на компьютере
Если платформа уже 64-разрядная, а ошибка осталась, смотрим на саму машину.
- 🧹 Закройте браузер с десятками вкладок, Outlook, второй сеанс 1С, антивирусный полный скан.
- 🧹 Закройте обычные базы в соседних окнах. Каждое открытое окно 1С держит память.
- 🧹 Если работаете по RDP, проверьте, сколько занимают соседние сеансы: на терминальном сервере память делится между всеми.
- 🧹 Очистите локальный кэш (см. ниже).
Кэш чистится так. Закройте все окна 1С, затем удалите содержимое двух папок профиля пользователя:
%APPDATA%\1C\1cv8
%LOCALAPPDATA%\1C\1cv8
Удаляйте только папки с длинными именами из букв и цифр (идентификаторы баз) и файл 1cv8strt.pfl не трогайте, если не хотите потерять список баз. Список баз хранится в ibases.v8i, он лежит рядом. Альтернатива без ручного удаления: запуск с параметром /ClearCache.
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" ENTERPRISE /ClearCache
Вместо 8.3.XX.XXXX подставьте номер вашей версии платформы.
Файл подкачки Windows
Когда физическая память заканчивается, Windows уходит в своп. Если файл подкачки отключён или ограничен, любой скачок потребления превращается в «Недостаточно памяти».
Как проверить и настроить:
Пуск→Параметры→Система→О системе→Дополнительные параметры системы.- Вкладка «Дополнительно», блок «Быстродействие», кнопка «Параметры».
- Вкладка «Дополнительно» → «Изменить» в блоке виртуальной памяти.
- Включите «Автоматически выбирать объём файла подкачки» либо задайте размер вручную.
- Перезагрузите компьютер.
Ориентир для ручной настройки: начальный размер равен объёму ОЗУ, максимальный в полтора-два раза больше. Например, при 8 ГБ ОЗУ задайте от 8 до 16 ГБ. Диск с файлом подкачки должен иметь запас: свободных 20-30 ГБ достаточно.
Файл подкачки на сетевом или почти полном диске даёт обратный эффект. Держите его на локальном SSD.
Файл подкачки не расширяет потолок одного 32-разрядного процесса. Он помогает, когда не хватает именно общей памяти машины. Поэтому сначала разрядность, потом своп.
Серверная база: лимиты кластера и рабочих процессов
Здесь ошибка часто приходит от сервера, а не от клиента. Рабочий процесс rphost умеет сам себя «закрывать» при превышении заданного объёма, и тогда пользователь видит нехватку памяти.
Откройте консоль администрирования серверов 1С и перейдите к свойствам кластера. Проверьте два блока настроек:
- 🖥 допустимый объём памяти рабочих процессов и интервал превышения этого объёма;
- 🖥 количество рабочих процессов и число соединений на один процесс.
Названия полей немного отличаются между версиями консоли, поэтому ищите по смыслу: «объём памяти» и «интервал превышения».
Что менять:
- Если лимит стоит небольшой (например, 2-4 ГБ при 32 ГБ на сервере), поднимите его. Значение 0 означает «без ограничения», но в боевом кластере держать ноль рискованно.
- Если рабочий процесс один, а пользователей много, добавьте процессы или уменьшите число соединений на процесс.
- Проверьте, что физической памяти сервера хватает на сумму лимитов всех процессов плюс СУБД. Если СУБД стоит на той же машине, оставьте ей большую долю.
Перед обновлением полезно на время вытолкнуть пользователей: «Администрирование» → «Сеансы», завершить сеансы, включить блокировку начала сеансов. Обновление в монопольном режиме потребляет меньше, чем при работающих пользователях.
После правки лимитов перезапустите службу агента сервера в нерабочее время, чтобы настройки применились ко всем рабочим процессам сразу.
Обновление небольшими шагами
Большой скачок через несколько релизов заставляет 1С перестраивать структуру таблиц за один проход. Это самый тяжёлый момент по памяти.
Правила, которые снижают нагрузку:
- Проходите промежуточные релизы там, где этого требует описание обновления. Конфигурации с большим разрывом версий иногда обновляются только через «порог».
- Если база разрослась, заранее удалите помеченные объекты и почистите старые записи журнала регистрации. Сворачивать базу ради обновления не нужно.
- Обновляйте не во время закрытия периода и не при включённых регламентных заданиях.
Порядок для серверной базы через конфигуратор:
- Откройте базу в конфигураторе в монопольном режиме.
- Пункт
Конфигурация→Поддержка→Обновить конфигурацию. - Выберите файл обновления и дождитесь сравнения.
- После загрузки нажмите
F7или сохраните конфигурацию, затемКонфигурация→Сохранить конфигурацию базы данныхи согласитесь с реструктуризацией.
Если ошибка возникает на этапе реструктуризации, а не загрузки, значит, память кончается именно при перестройке таблиц. Тогда поможет 64-разрядный конфигуратор и свободное место на диске под временные таблицы СУБД.
Как увидеть, сколько памяти реально ест 1С
Гадать не нужно: потребление видно во время обновления.
- Откройте диспетчер задач и вкладку «Подробности».
- Отсортируйте процессы по колонке «Память (активный частный рабочий набор)».
- Запустите обновление и наблюдайте за
1cv8.exe.
Если процесс 32-разрядный и рост останавливается около 2-3 ГБ с последующим падением, причина в разрядности, остальное можно не проверять. Если же процесс 64-разрядный, а общая память машины выбрана под ноль, виноваты соседние программы или маленький файл подкачки.
На сервере то же самое покажет монитор ресурсов: смотрите отдельно rphost и процессы СУБД. Часто выясняется, что память съедает не 1С, а СУБД без ограничения, и рабочим процессам ничего не остаётся.
Антивирус с проверкой «на лету» тоже тормозит реструктуризацию файловой базы и добавляет расход памяти. На время обновления добавьте папку с базой в исключения, если это разрешено политикой безопасности.
Если не помогло: проверка и перенос базы
Когда стандартные меры исчерпаны, а база большая и «старая», причина может быть в самой базе.
Файловая база. Запустите конфигуратор и выберите Администрирование → Тестирование и исправление. Отметьте проверку логической целостности, реструктуризацию таблиц информационной базы и пересчёт итогов. Режим «Исправлять обнаруженные ошибки» включайте только при наличии копии.
Перенос через выгрузку. Выгрузите базу в .dt, создайте пустую базу на 64-разрядной платформе и загрузите файл (Администрирование → Выгрузить информационную базу и Загрузить информационную базу). Новая структура файла часто убирает фрагментацию, а следом уходит и нехватка памяти.
Серверная база. На стороне СУБД проверьте, что на диске есть место для журнала транзакций, а сама СУБД не ограничена по памяти слишком жёстко. В PostgreSQL и MS SQL лимиты памяти задаются в настройках сервера СУБД.
Какой у вас случай
Быстрая диагностика по симптомам
Как не получить эту ошибку в следующий раз
- 📦 Держите платформу 64-разрядной на всех машинах, где идёт обновление. Тонкий клиент пользователей можно оставить любым.
- 📦 Обновляйте заранее, в тихое время, при отключённых регламентных заданиях.
- 📦 Раз в квартал чистите журнал регистрации и удаляйте помеченные объекты.
- 📦 Следите за размером базы. Рост выше десятков гигабайт без плана архивации заканчивается тяжёлыми обновлениями.
- 📦 На сервере оставляйте запас памяти: сумма лимитов процессов не должна съедать всю ОЗУ.
Частые вопросы
Сколько оперативной памяти нужно для обновления 1С?
Поможет ли увеличение ОЗУ, если платформа 32-разрядная?
Можно ли обновить базу на другом компьютере?
.dt, обновите её на мощной машине с 64-разрядной платформой и загрузите обратно. Для файловой базы можно просто скопировать файл 1Cv8.1CD.