Ошибка «На сервере недостаточно памяти для выполнения задания» |
Я |
20.01.22 — 15:17
Добрый день!
Выполняю регламентное задание синхронизации бухгалтерии 3.0 и ERP 2.5. Выгружаю документы за месяц. Итого к выгрузке 15000-30000 объектов. Думаю, что это не такие уж большие цифры. Ничего не выгружается. Выходит ошибка выполнения фонового задания «На сервере недостаточно памяти для выполнения задания». Ресурсов на сервере достаточно. ОЗУ 48 Гб, на дисках места предостаточно.
Платформа 8.3.20.1674, БП 3.0.106.40, ERP 2.5.7.308. Сервер 1С 64-рязрядый. При установке 1С особых настроек не делали в локальном кластере, рабочем сервере и рабочем процессе. Все по умолчанию.
Как устранить данную ошибку?
Заранее спасибо!
1 — 20.01.22 — 15:19
(0) «Как устранить данную ошибку?» С меньшим объемом данных ошибки такой не было? Если нет, то можно попакетно это дело грузить, только не забывать освобождать память, после каждой выгрузки
2 — 20.01.22 — 15:20
Чисто теоретически: вся память под SQL и свободной нет
3 — 20.01.22 — 15:34
Может еще разваливаться на передаче параметров в фоновое. Там есть ограничение на общий размер параметров.
4 — 20.01.22 — 15:42
(0)
Вариантов решения много:
экстенсивные:
Увеличить объем озу,
уменьшить размер пакета (выгружать по дням, неделям, декадам),
уменьшить фрагментацию озу
интенсивные:
переписать код обмена.
5 — 20.01.22 — 15:43
Сервер проф или корп?
6 — 20.01.22 — 17:05
(5) КОРП
7 — 20.01.22 — 17:06
(1) Если грузить данные только за 5 дней, а не за месяц, то такой ошибки нет.
8 — 20.01.22 — 17:09
посмотреть настройки скуля, там ему наверно всю память сервака отдали или ограничили?
9 — 20.01.22 — 17:11
(7) Вот и грузи за 5 дней
10 — 20.01.22 — 17:13
(8) База Postgre находится на другом сервере.
11 — 20.01.22 — 17:15
(9) 5 дней 7500 объектов грузил весь рабочий день — 8 часов. Это так и должно быть?
12 — 20.01.22 — 17:15
(0) У вас ИТС есть? Почему ты на форум пишешь вместо того чтобы своего фра и НБГ напрячь багой в тиражных решениях?
13 — 20.01.22 — 17:15
(10) Ну так и событие не на клиенте
14 — 20.01.22 — 17:19
(13) Не на клиенте. Полагаю серверу 1С памяти не хватает. Не Postgre.
15 — 20.01.22 — 17:21
Ну таки да, я бы сервер 1С перезапустил, может и хватит памяти
16 — 20.01.22 — 17:25
(12) Получается это баг?
17 — 20.01.22 — 17:26
(15) Хорошая мысль. Мешает работа пользователей только.
18 — 20.01.22 — 17:26
как-то тестили подобное на предмет: «ну какого хрена так долго», когда ОП полгига.
в общем, если есть время, то следуйте по простым шагам. писали-звонили, но если воз и ныне там и тянет только приличный объем ОП, то грусть.
1. Платформа(на 2020.12): 8.3.17.1851
2. Конфигурация(на 2020.12) : Управление торговлей, редакция 11 (11.4.13.85), Клиент-Сервер. В ЕРП, вероятно, та же шляпа.
3. Предмет анализа возможной ошибки: метод общего модуля ДоходыИРасходыСервер.РаспределениеРасходовНаСебестоимостьТоваров(ДокументСсылка)
4. Места в коде указанной конфигурации где метод определен и вызывается:
Основная конфигурация ОбщийМодуль.ДоходыИРасходыСервер.Модуль(622, 9) Функция РаспределениеРасходовНаСебестоимостьТоваров(ДокументСсылка) Экспорт
Основная конфигурация ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль(19170, 48) РасшифровкаДопРасходов = ДоходыИРасходыСервер.РаспределениеРасходовНаСебестоимостьТоваров(ДанныеИБ.Ссылка);
Основная конфигурация ОбщийМодуль.МенеджерОбменаЧерезУниверсальныйФормат.Модуль(54172, 48) РасшифровкаДопРасходов = ДоходыИРасходыСервер.РаспределениеРасходовНаСебестоимостьТоваров(ДанныеИБ.Ссылка);
5. Описание возможной ошибки: на указанной конфигурации рассматриваемая функция ДоходыИРасходыСервер.РаспределениеРасходовНаСебестоимостьТоваров(ДокументСсылка)
вызывается при обменах и приводит к длительному выполнению обменов.
6. Способ воспроизведения ошибки: Непосредственно при обмене тестировать не очень удобно, поэтому можно создать простейшую обработку
с реквизитом «ДокументСсылка» и в этой обработке создать команду со следующим кодом:
&НаСервереБезКонтекста
Функция РаспределениеРасходовНаСебестоимостьТоваровСервер(ДокументСсылка)
ДоходыИРасходыСервер.РаспределениеРасходовНаСебестоимостьТоваров(ДокументСсылка);
КонецФункции
&НаКлиенте
Процедура РаспределениеРасходовНаСебестоимостьТоваровКлиент(Команда)
Если НЕ ЗначениеЗаполнено(ДокументСсылка) Тогда
ПоказатьПредупреждение(,»Не выбран документ»);
Возврат;
КонецЕсли;
РаспределениеРасходовНаСебестоимостьТоваровСервер(ДокументСсылка);
КонецПроцедуры
7. В общем модуле ДоходыИРасходыСервер.РаспределениеРасходовНаСебестоимостьТоваров() ставим точку останова перед выполнением запроса, т.е.
в строке МассивРезультатов = Запрос.ВыполнитьПакет();
8. Выбираем в обработке документ и выполняем команду.
9. После остановки выполнения получаем параметры и текст запроса. В нашем случае были такие значения:
…..
Как видим, к «жирнейшему» регистру накопления выполняется запрос с фильтром только по организации и без фильтра по периоду и аналитике.
Как факт, около 13kk записей оборотов по организации «едет» в tempdb при обмене каждого документа.
Допустим документов на обмен 100 и так как узанный запрос выполнятеся около 3 минут, то несложный обмен «крутит» оклоло 300 мин 100 документов.
Самое печальное, что результирующий пакет в нашем случае пустой (доп расходов нет) и титаническая работа с tempdb бессмысленна.
Если поставить в фильтр параметры периода, то пакет выполнятся около трех секунд, при условии, что у нас в регистре себестоимости десятки миллионов записей.
Просьба рассмотреть описанную ситуацию на предмет оптимизации кода.
…………
Я допускаю, что я могу в чем-то ошибаться, делать неверные выводы. но возможно еще кто-нибудь увидит что там что-то не так и этот
дикий тормозной костыль отполируют.
19 — 20.01.22 — 17:26
(16) Ну или фича
Но раз не задокументировано то баг
20 — 20.01.22 — 17:28
Имхо
1. Связка ERP и БП причем обе последние очень странна, нафик там БП если в ERP по идее все есть?
2. На больших объемах только свои обмены, никаких глюкавых и отстающих типовых
21 — 20.01.22 — 17:32
(18) +
12. Смотрим текст пакета который самый «жирный»:
ВЫБРАТЬ
УчетСебестоимости.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
УчетСебестоимости.АналитикаУчетаНоменклатуры.СкладскаяТерритория КАК Склад,
УчетСебестоимости.Период КАК Период,
УчетСебестоимости.Регистратор КАК ДокументПоступления,
УчетСебестоимости.КоличествоПриход КАК Количество,
УчетСебестоимости.СтоимостьРеглПриход КАК Стоимость
ПОМЕСТИТЬ ВтПоступленияТоваров
ИЗ
РегистрНакопления.СебестоимостьТоваров.Обороты(
,
,
Регистратор,
РазделУчета В (ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах), ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.СобственныеТоварыВПути))
И Организация = &Организация) КАК УчетСебестоимости
ГДЕ
УчетСебестоимости.КоличествоПриход > 0
И УчетСебестоимости.СтоимостьРеглПриход > 0
ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Склад,
ДокументПоступления
;
это и есть узкое место
22 — 20.01.22 — 17:36
(21) Видимо и в ERP именно такая ситуация. Маленький объем данных перегружает неоправданно долго. А большие объемы данных вовсе не тянет.
Скорее всего там тоже такая же процедура кривая.
23 — 20.01.22 — 17:39
(20) 1. Т.е. такая схема работы — вести бух. учет в БП, а управленческий в ERP — не катит?
2. Видимо вы правы, что типовой обмен глючный.
24 — 20.01.22 — 17:51
(20)[нафик там БП если в ERP по идее все есть? ]
не всегда в ERP имеет смысл применять все ФСБУ/НК
не всегда имеет смысл отражать учет с детальностью ERP
часто ERP отстаёт в функционале от БП в части РСБУ
25 — 20.01.22 — 18:17
(20) А мне нравится
26 — 21.01.22 — 06:22
ERP 2.5 — сама по себе прожорливая. После перехода с 2.4 нам пришлось докупить дисков и памяти на сервер — перестало хватать. 48 Гб — вообще мало, у нас на 128 еле шевелилась.
27 — 21.01.22 — 11:13
(24) Какая схема работы лучше: 1) бух. учет ведется в ERP вместе с управленческим; 2) бух. учет ведется в БП и документы выгружаются в ERP для управленческого учета?
28 — 21.01.22 — 11:15
(26) 1) Сколько же надо памяти чтобы работало нормально?
2) Ошибка про которую я писал скорее всего не связана с нехваткой ОЗУ. Видимо сервер 1С потребляет не всю доступную память.
29 — 21.01.22 — 11:29
(27) >> Какая схема работы лучше.
Странный вопрос. Та что подойдёт именно вам. Готового ответа тут быть не может.
У любой схемы есть свои преимущества и недостатки.
Выбор напрямую зависит от того насколько ваш УУ далёк от БУ и НУ.
К тому же у вас и схема учёта странная — первоисточником первички выступает БП. Обычно наоборот — весь учёт и документооборот в ERP, а в БП выгружают данные нужные для регламентированного БУ и НУ.
Зачем вам вообще ERP, если БП хватает для ведения первичного учёта?
30 — 21.01.22 — 11:35
(28) >> сервер 1С потребляет не всю доступную память.
Что мешает проверить это утверждение? Запустить выгрузку и посмотреть за показателями. Хотя бы для начала просто в мониторе производительности ОС и в консоли администрирования кластера 1С.
31 — 21.01.22 — 11:57
(28) Мы удвоили до 256: хотя бы закрытие месяца перестало жаловаться на недостаток памяти.
32 — 21.01.22 — 12:08
(31) А сколько пользователей у вас работает в ERP?
33 — 21.01.22 — 12:16
(29) «Зачем вам вообще ERP, если БП хватает для ведения первичного учёта?» — Для бухгалтерского учета хватает БП, а для управленческого не хватает.
«К тому же у вас и схема учёта странная — первоисточником первички выступает БП. Обычно наоборот — весь учёт и документооборот в ERP, а в БП выгружают данные нужные для регламентированного БУ и НУ.» — Ранее и БУ и УУ велся в БП, а теперь внедряется ERP.
«Хотя бы для начала просто в мониторе производительности ОС» — ЦП — 35% занято, память — 64%.
34 — 21.01.22 — 12:26
(33) >> в мониторе производительности ОС» — ЦП — 35% занято, память — 64%.
Ну может надо хотя бы по процессам посмотреть. Сколько съедает rmngr, rphost.
Счетчики надо в динамике смотреть. Как и в какой момент они растут. Сравнивать с тем, что показывает консоль кластера по процессам, сеансам и соединениям.
35 — 21.01.22 — 12:27
(32) При закрытии месяца — 1.
36 — 21.01.22 — 12:29
(33) >> Для бухгалтерского учета хватает БП, а для управленческого не хватает. Ранее и БУ и УУ велся в БП, а теперь внедряется ERP.
Это я понимаю. Вроде не совсем дурачок ))). Но это не ответ на вопрос «зачем?». Что такого делается в ERP после загрузки туда данных из БП? Можно лишь гадать.
Слишком мало вводных данных, чтобы давать какие-то советы.
37 — 21.01.22 — 12:43
(34) «Ну может надо хотя бы по процессам посмотреть. Сколько съедает rmngr, rphost.» — rphost — 20% ЦП, 11400 МБ. rmngr — 0.7% ЦП, 377 МБ. Если в кратце.
38 — 21.01.22 — 12:45
(27) лучше вести учет в одной системе, но есть вышеописанные исключения
39 — 21.01.22 — 12:48
(36) «Что такого делается в ERP после загрузки туда данных из БП?» — Как минимум на основании перегруженных документов должен формироваться УУ. Как максимум документы там должны быть еще проведены по бух. учету, чтобы в последствии теоретически бухгалтерия могла тоже работать в ERP и не перегружать документы из БП.
40 — 21.01.22 — 12:51
(39)[на основании перегруженных документов должен формироваться УУ]
лажа
нет на стороне БП аналитик для УУ учета, в итоге он будет равен БУ
41 — 21.01.22 — 12:53
(40) в ERP же есть, для этого и перегружаем.
42 — 21.01.22 — 19:41
(39) ахаха
43 — 21.01.22 — 20:16
(39) Телега впереди лошади.ИМХО.
44 — 21.01.22 — 21:10
(39) а 1с точно 64 запустил? может у тебя 32 до сих пор?
45 — 22.01.22 — 11:19
(44) сервер 1С у нас 64 разрядный, а клиентский 1С — 32 разрядный
46 — 22.01.22 — 11:26
(45) запустите 64-х разрядный клиент. Что вы чудите? Как это вы вообще додумались, ЕРП 2.5, платформа 8.3.20, и запускать 32- клиент?
47 — 22.01.22 — 12:15
(41) жесть
48 — 22.01.22 — 12:23
(45)Вот здесь и засада может быть.
49 — 22.01.22 — 23:13
(47) А как будет не жесть?
50 — 24.01.22 — 09:16
(46) Не помогло
51 — 24.01.22 — 09:19
(45) беда…у вас доходит лимит 4гига на приложение и падает по ошибке. Память освобождается, только когда заканчивает свою работу запускаемая команда. В крайнем случае, можно разбить выгрузку на части, чтобы каждая не выжирала более 4гигов и через ПодключитьОбработчикОжидания запускать комадну выгрузки.
52 — 24.01.22 — 09:20
Можно просто определить период, за который не вывваливается ошибка, и обработчиком ожидания выгружать со сдвигом дат до нужного периода.
53 — 24.01.22 — 09:26
(49) УУ в ЕРП, разумеется.
54 — 24.01.22 — 09:27
(0) лицензия корп — это понятно, а вот обмен… типовой или самописный?
55 — 24.01.22 — 11:11
(54) Типовой
56 — 24.01.22 — 17:02
(54) Т.е для обмена БП — ERP желательно использовать лицензии на сервер 1С и клиентские лицензии КОРП?
57 — 24.01.22 — 17:16
(56) все же я считаю, что узкое место по вашей теме в коде (который я указал выше), а не в железе/лицухах.
у нас «фаршированное» железо, Корпы и пр. и все-равно типовой обмен в УТ -> БП — это поход черепах на кладку яиц.
58 — 25.01.22 — 11:57
(57) А какую доработку этой функции/запроса вы бы посоветовали? Какой конкретно поставить отбор и в каком месте?
59 — 25.01.22 — 12:18
(18) «Если поставить в фильтр параметры периода, то пакет выполнятся около трех секунд» — Поставить параметры ДатаНачала и ДатаОкончания такие же как в остальных частях пакета запроса?
SAURON777
60 — 25.01.22 — 12:23
(57) Самое интересное, что я делаю перелив документов только за один месяц после переноса остатков из БП в пустую ERP. Т.е. в ERP пока мало что есть. В частности в регистре РегистрНакопления.СебестоимостьТоваров практически нет записей. Видимо в моем случае не здесь находится узкое место.
Решаемая задача: ошибка «недостаточно памяти на сервере 1С»
Рисунок 1 — Ошибка в приложении
Для выполнения описанных действий требуется учетная запись Администратора.
Вариант №1 решение проблемы заключается в увеличении памяти процесса 1С
Шаг 1. Запускаем командную строку.
Откройте командную строку Windows. Воспользуйтесь меню «Пуск» или
комбинацией клавиш Windows +R и введите команду:
cmd
Рисунок 2 — Окно приложения «Выполнить»
Шаг 2. В появившемся окне наберите команду:
bcdedit /set increaseuserva 3200
Для примера, увеличим ограничение до 3,2 Гб. Увеличивать ограничение стоит аккуратно и постепенно.
Рисунок 3 — Командная строка. Увеличение памяти
Шаг 3. После подтверждения успешного завершения операции в окне командной строки, перезагрузите ПК и попробуйте еще раз выполнить действия, которые привели к ошибке. Если проблема не решена и 1С по-прежнему вылетает – можете еще раз увеличить ограничение.
Шаг 4. После успешного завершения операции без ошибки в 1С, восстановите ограничения Windows по умолчанию командой:
bcdedit /deletevalue increaseuserva
Это необходимый шаг, чтобы 1С не оказывала влияние на работоспособность ОС и других приложений.
Рисунок 4 — Командная строка. Снятия ограничения
Вариант №2 решение проблемы заключается в завершение неиспользуемых сеансов в консоли администрирования 1С
Заходим в Администрирование серверов 1С Предприятия x86-64 выбираем Локальный кластер и с помощью правой кнопки мыши выбираем Свойства:
Рисунок 5 — Вызов свойств локального кластер
В появившемся окне выбираем Принудительно завершить проблемные процессы:
Рисунок 6 — Параметры кластера
И нажимаем Ок.
Также можно выставить ограничения использования памяти, при которых будет срабатывать очистка памяти и отсеивать проблемные процессы.
Последний метод возможен при использовании «Корпоративной лицензии».
Заходим Кластеры — Локальный кластер — Рабочие серверы и на названии сервера выбираем Свойства:
Рисунок 7 — Вызов свойств рабочего сервера
И в ячейке Временно допустимый объем памяти процессоров устанавливаем допустимое значения в байтах.
Рисунок 8 — Окно параметров рабочего сервера
Если вам требуется помощь специалиста в настройке, оптимизации сервера 1С:Предприятие, либо переносе в облако, свяжитесь с нами любым удобным способом.
Александр Рудницкий
Программист 1С компании CorpSoft24
Ошибка системы «1С: Предприятие 8.3» из-за нехватки памяти — постоянный спутник администратора 1С. Разбираемся, из-за чего они возникают, и рассматриваем пример диагностики одного подобного эпизода из практики администрирования сервера 1С.
Природа проблемы
Сообщение «Недостаточно памяти» — одна из самых часто встречающихся ошибок при работе с 1С: Предприятие версии 8.3 и выше. Она происходит по самым разным причинам — от обработки системой нескольких массивных файлов и загрузки больших объёмов данных, до обновления ПО и перегрузки ресурсов при формирования сложных отчётов.
Она не так критична при возникновении на клиентском компьютере, а вот если сообщение об ошибке выдает сервер 1С, нужно отнестись к этому максимально внимательно. Это тот самый случай, когда очень важно установить правильный «диагноз» — то есть решения не будет, пока ответственный администратор не распознает источник проблемы, не поймёт её природу.
Проблема может заключаться в несвоевременном завершении процессов, запускаемых различным ПО. Они накапливаются и перегружают доступный объём памяти на сервере. Также может иметь место интенсивная работа различных программ с постоянным резервированием и освобождением ресурсов памяти.
Приведу пример расследования одной подобной ошибки из своей практики.
Инцидент
Поступило обращение со следующей ошибкой:
Смотрим журнал регистрации, там так же выводится ошибка с пояснением о нехватке памяти на сервере:
Настроив технологический журнал (ТЖ) системы 1С с событием EXCP — EXCPCNTX обнаруживаем запись:
Ошибка СУБД out of memory for query result
То есть, обе ошибки сообщают о проблеме объёма памяти, на основании чего нашим главным подозреваемым становится код конфигурации (возможно наличие неоптимальных запросов).
Находим код конфигурации, вызывающий ошибку.
В журнале регистрации указан следующий код:
{ОбщийМодуль.ДокументооборотСКОВызовСервера.Модуль(22)}: Ошибка при вызове метода контекста (Получить)
по причине:
Недостаточно памяти для получения результата запроса к базе данных
Открываем конфигуратор и переходим в указанный модуль к указанному номеру строки кода:
Строка, на которой произошла ошибка:
ВнешниеОбъектыХранилище = Константы.ДокументооборотСКонтролирующимиОрганами_ВнешнийМодуль;
ДвоичныеДанныеОбработки = ВнешниеОбъектыХранилище.Получить().Получить();
Смотрим тип объекта (константы), к которой идёт обращение:
Итак, в конфигурации есть константа:
ДокументооборотСКонтролирующимиОрганами_ВнешнийМодуль
Она хранит в базе что-то неструктурированное (двоичные данные), что может занимать значительный объём памяти.
Проверяем, какой объем данных фактически занимает константа. Для этого узнаем имя таблицы хранения в базе PostgreSQL — таблица «_Const10013», индекс «_Const10013_ByKey».
Узнаем размер таблиц «Const10013», «_Const10013_ByKey» на диске:
На диске таблица занимает всего 4688 Кб = 4,6 Мб. Размер является незначительным, значит, причина не в константе.
Обнаруживаем, что кластер 1С является 32-разрядным:
32-разрядный кластер 1С имеет ограничение примерно в 3.8 Гб, при достижении которого происходит падение процесса. В режиме отсутствия нагрузки rphost занял 3,2 Гб, что близко к порогу падения. Подобные инциденты будут происходить в любой момент времени.
Внесены изменения:
- В кластере серверов 1С «Интервал превышения допустимого объёма памяти процессов» = 300. Настройка не избавляет от ошибки, но необходима для снижения частоты возникновения ошибки.
- В планировщике Windows настроен перезапуск службы 1С; такими образом освобождается виртуальное адресное пространство в памяти, создаётся новый рабочий процесс.
Настройка также не гарантирует от ошибки, но снижает вероятность её возникновения.
Для предотвращения повторной ошибки следует:
- Сменить 32-разрядный кластер серверов 1С на 64-разрядный.
- Так как на сервере используется 14 ядер процессора, необходимо осуществить переход на платформенные лицензии 1С КОРП для снятия ограничений по настройкам и обеспечения возможностей для гибкой настройки распределения памяти сервера.
Другие варианты
Зачастую, особенно в ситуации, когда нужно срочно вернуть систему в работоспособное состояние при возникновении подобной ошибки, можно попробовать такие «дедовские» способы, как перезагрузка сервера 1С или перезапуск рабочих процессов 1С, что приведёт к уменьшению объёма используемой памяти.
Источником проблемы также может быть недостаток пространства на жестком диске сервера. Здесь решение будет зависеть от устройство сервера или кластера, но здесь также могут помочь и перезапуск сервера, и наращивание ёмкости диска (или освобождение существующего пространства), а также оптимизация запросов или обновление версии ПО системы.
Одна из самых распространенных ошибок, возникающих в процессе работы с 1С 8.3 – «Недостаточно памяти». В реальности она может происходить после множества событий – обновления, обработки больших файлов, формирования отчета, загрузки данных и прочих. Это означает, что любой администратор и разработчик 1С должен понимать суть проблемы и уметь исправлять ее. Простым увеличением оперативной памяти ПК или жесткого диска эту проблему не решить.
Решение проблемы на клиентском компьютере
Причины этой ошибки кроются в том, что в операционных системах семейства Microsoft выделяется определенный объем памяти на каждое приложение 1С. Эти значения заявлены разработчиком, компанией 1С. Для 32-разрядных систем это значение установлено в 2 Гб, для 64 – 4 Гб. Когда ПО превышает этот показатель, на мониторе возникает окно с ошибкой.
Самый простой способ избавиться от таких сообщений – удалить помеченные на удаление объекты в конфигурации. Это помогает нечасто, но избавляет от лишних колебаний. К тому же, риск этих действий минимален, поскольку не требует вмешательства во внутренние настройки Windows. Если удаление не помогло, то придется бороться другими методами.
Еще одним решением для 32-битных систем можно назвать переход на 64-разрядную версию или выделение большего количества памяти приложениям. Первый вариант намного правильнее, но иногда в силу различных причин он невозможен. Тогда остается только вариант с алгоритмом действий, показанный ниже, но пользоваться им стоит очень аккуратно – возможны существенные проблемы с работоспособностью всей системы.
Этот алгоритм достаточно прост:
- Откройте командную строку Windows. Воспользуйтесь меню «Пуск» или комбинацией клавиш Windows +R и введите команду «cmd»;
- В появившемся окне наберите команду «bcdedit /set increaseuserva 3200» (для примера увеличим ограничение до 3,2 Гб). Увеличивать ограничение стоит аккуратно и постепенно;
- После подтверждения успешного завершения операции в окне командной строки перезагрузите ПК и попробуйте еще раз выполнить действия, приведшие к ошибке. Если проблема не ушла и 1С по-прежнему вылетает – можете еще раз увеличить ограничение;
- После успешного завершения операции без ошибки в 1С восстановите ограничения Windows по умолчанию командой «bcdedit /deletevalue increaseuserva». Это необходимый шаг, чтобы ОС не ущемляла свою работоспособность в угоду 1С и другим приложениям.
Это решение позволяет выполнить операцию, которую невозможно выполнить из-за ошибки 1С «Недостаточно памяти». Пользоваться им можно только в экстренных случаях, когда операцию необходимо выполнить прямо сейчас. В других обстоятельствах лучше попробовать запустить 1С на 64-разрядной платформе и повторить операцию там.
Недостаточно памяти на сервере 1С
Намного серьезнее стоит относиться к сообщению о том, что недостаточно памяти на сервере при обновлении или масштабной работе. Проблема может быть в несвоевременном завершении процессов, запускаемых различным ПО, вследствие чего происходит «наслоение» и накопление их в виртуальной памяти. Второй источник подобной ошибки – интенсивная работа различных программ с резервированием и освобождением памяти. Существует различное ПО для решения этих проблем, но практика показывает, что оно вызывает разрывы соединений и падения 1С.
Подобные ошибки заставляют задуматься, достаточно ли мощный сервер 1С. Увеличение его мощности пойдет на пользу компании, но обойти подобную ошибку можно и другими способами, не требующими вливания денежных средств.
Конечно, постоянно их применять не стоит, но однажды они могут помочь при необходимости срочно выполнить ресурсоемкую работу. Среди популярных способов, способных помочь решить ошибку недостатка памяти на сервере, называют:
- Перезагрузка сервера 1С;
- Перезапуск рабочих процессов 1С, что приведет к уменьшению используемой памяти. Этот вариант подойдет только для опытных администраторов, разбирающихся в консоли администрирования сервера 1С;
- Используя технологический журнал, найти таблицу, при загрузке которой появляется ошибка «Недостаточно памяти» при обновлении или другой операции. Если ошибка появилась при работе с таблицей «config», то выполните проверку конфигурации с флагом «Проверка логической целостности конфигурации». Найти эту функцию можно в конфигураторе в меню «Конфигурация».
Еще одна распространенная ошибка 1С возникает, когда на жестком диске на сервере мало места. Временные таблицы занимают много места, и в случае его недостатка, администратор видит ошибку «Недостаточно свободной памяти для выполнения операции». В таком случае сложно давать точные советы, так как устройство сервера или кластера может существенно отличаться в разных вариантах. Среди стандартных решений, которые помогают в таких случаях, можно найти перезапуск сервера, увеличение свободного места, оптимизация запросов, обновление версии.
В компаниях с большим количеством пользователей ошибка «Недостаточно свободной памяти на сервере 1С:Предприятия 8.3» возникает достаточно часто. Большой проблемой и предпосылкой к этому является недостаточный анализ необходимой производительности. Поэтому при внедрении 1С уделите большое внимание достаточной мощности серверов, чтобы в будущем не пришлось настраивать производительность в ущерб стабильности.
При работе с программой 1С может выскакивать ошибка 1С: Недостаточно памяти». Появление подобной ошибки 1С, как правило, возникает:
- при обновлении конфигурации программы 1С, с последующим перезапуском;
- при подготовке и составлении различных многоуровневых отчетов;
- при осуществлении финансовых расчетов большого объема;
- в других случаях, когда программа 1С используется с увеличенной нагрузкой.
Во всех вариантах причиной неполадок является малый объем оперативной (физической) памяти, которая зарезервирована под работу конкретной программы или отдельных ее компонентов.
Так же следует обратить внимание на рекомендованный объем оперативной памяти для конкретной конфигурации. Так, например, для конфигураций «1С: Бухгалтерия 8, ред.3.0», «1С: Управление торговлей 8, ред. 11», «1С: Комплексная автоматизация 8, ред. 2.4», «1С: ERP Управление предприятием 2, ред. 2.4» рекомендуемый объем памяти – 4 Гб.
Способы устранения ошибки 1С: «Недостаточно памяти»:
- Принудительное увеличение объема оперативной памяти.
Для этих целей необходимо через опцию WINDOWS «ПУСК», в режиме поиска ввести (на английском языке) — «cmd». После отображения командной строки – наберите словосочетание «bcdedit/set increaseuserva 3100». При этом последний параметр указывает на размер физической памяти, выделяемой под используемую программу. Возможно, таких циклов корректировки необходимо будет произвести несколько раз, постепенно увеличивая объем доступной оперативной памяти (3100, 3200, 3300 и т.д.) до полного устранения данной ошибки 1С: «Недостаточно памяти».
Нужно отметить, что данные действия являются рискованным методом, который может привести к замедлению или сбою работы операционной системы Windows.
- Самым оптимальным решением будет переход с 32-х на 64-х разрядную операционную систему, естественно, при наличии такой аппаратной возможности.
Данный способ предоставляет программе 1С доступ к 4 Гб оперативной памяти, в то время, как даже при наращивании памяти в 32-х разрядной системе до 8 Гб – корректный доступ будет только к 2 Гб.