Имя: Пароль:
1C
1С v8
Ошибка "На сервере недостаточно памяти для выполнения задания"
0 SAURON777
 
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 Kassern
 
20.01.22
15:19
(0) "Как устранить данную ошибку?" С меньшим объемом данных ошибки такой не было? Если нет, то можно попакетно это дело грузить, только не забывать освобождать память, после каждой выгрузки
2 Бизон
 
20.01.22
15:20
Чисто теоретически: вся память под SQL и свободной нет
3 acht
 
20.01.22
15:34
Может еще разваливаться на передаче параметров в фоновое. Там есть ограничение на общий размер параметров.
4 МихаилМ
 
20.01.22
15:42
(0)
Вариантов решения  много:
экстенсивные:
Увеличить объем озу,
уменьшить размер пакета (выгружать по дням, неделям, декадам),
уменьшить фрагментацию озу
интенсивные:
переписать код обмена.
5 ДенисЧ
 
20.01.22
15:43
Сервер проф или корп?
6 SAURON777
 
20.01.22
17:05
(5) КОРП
7 SAURON777
 
20.01.22
17:06
(1) Если грузить данные только за 5 дней, а не за месяц, то такой ошибки нет.
8 Kigo_Kigo
 
20.01.22
17:09
посмотреть настройки скуля, там ему наверно всю память сервака отдали или ограничили?
9 Мимохожий Однако
 
20.01.22
17:11
(7) Вот и грузи за 5 дней
10 SAURON777
 
20.01.22
17:13
(8) База Postgre находится на другом сервере.
11 SAURON777
 
20.01.22
17:15
(9) 5 дней 7500 объектов грузил весь рабочий день - 8 часов. Это так и должно быть?
12 Garykom
 
гуру
20.01.22
17:15
(0) У вас ИТС есть? Почему ты на форум пишешь вместо того чтобы своего фра и НБГ напрячь багой в тиражных решениях?
13 Бизон
 
20.01.22
17:15
(10) Ну так и событие не на клиенте
14 SAURON777
 
20.01.22
17:19
(13) Не на клиенте. Полагаю серверу 1С памяти не хватает. Не Postgre.
15 Бизон
 
20.01.22
17:21
Ну таки да, я бы сервер 1С перезапустил, может и хватит памяти
16 SAURON777
 
20.01.22
17:25
(12) Получается это баг?
17 SAURON777
 
20.01.22
17:26
(15) Хорошая мысль. Мешает работа пользователей только.
18 unenu
 
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 Garykom
 
гуру
20.01.22
17:26
(16) Ну или фича
Но раз не задокументировано то баг
20 Garykom
 
гуру
20.01.22
17:28
Имхо
1. Связка ERP и БП причем обе последние очень странна, нафик там БП если в ERP по идее все есть?
2. На больших объемах только свои обмены, никаких глюкавых и отстающих типовых
21 unenu
 
20.01.22
17:32
(18) +  

12. Смотрим текст пакета который самый "жирный":


   ВЫБРАТЬ
    УчетСебестоимости.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
    УчетСебестоимости.АналитикаУчетаНоменклатуры.СкладскаяТерритория КАК Склад,
    УчетСебестоимости.Период КАК Период,
    УчетСебестоимости.Регистратор КАК ДокументПоступления,
    УчетСебестоимости.КоличествоПриход КАК Количество,
    УчетСебестоимости.СтоимостьРеглПриход КАК Стоимость
   ПОМЕСТИТЬ ВтПоступленияТоваров
   ИЗ
    РегистрНакопления.СебестоимостьТоваров.Обороты(
            ,
            ,
            Регистратор,
            РазделУчета В (ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах), ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.СобственныеТоварыВПути))
                И Организация = &Организация) КАК УчетСебестоимости
   ГДЕ
    УчетСебестоимости.КоличествоПриход > 0
    И УчетСебестоимости.СтоимостьРеглПриход > 0

   ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Склад,
    ДокументПоступления
  ;

это и есть узкое место
22 SAURON777
 
20.01.22
17:36
(21) Видимо и в ERP именно такая ситуация. Маленький объем данных перегружает неоправданно долго. А большие объемы данных вовсе не тянет.
Скорее всего там тоже такая же процедура кривая.
23 SAURON777
 
20.01.22
17:39
(20) 1. Т.е. такая схема работы - вести бух. учет в БП, а управленческий в ERP - не катит?
2. Видимо вы правы, что типовой обмен глючный.
24 shuhard
 
20.01.22
17:51
(20)[нафик там БП если в ERP по идее все есть? ]
не всегда в ERP имеет смысл применять все ФСБУ/НК
не всегда имеет смысл отражать учет с детальностью ERP
часто ERP отстаёт в функционале от БП в части РСБУ
25 Krendel
 
20.01.22
18:17
(20) А мне нравится
26 RAJAH
 
21.01.22
06:22
ERP 2.5 - сама по себе прожорливая. После перехода с 2.4 нам пришлось докупить дисков и памяти на сервер - перестало хватать. 48 Гб - вообще мало, у нас на 128 еле шевелилась.
27 SAURON777
 
21.01.22
11:13
(24) Какая схема работы лучше: 1) бух. учет ведется в ERP вместе с управленческим; 2) бух. учет ведется в БП и документы выгружаются в ERP для управленческого учета?
28 SAURON777
 
21.01.22
11:15
(26) 1) Сколько же надо памяти чтобы работало нормально?
2) Ошибка про которую я писал скорее всего не связана с нехваткой ОЗУ. Видимо сервер 1С потребляет не всю доступную память.
29 Dmitrii
 
гуру
21.01.22
11:29
(27) >> Какая схема работы лучше.

Странный вопрос. Та что подойдёт именно вам. Готового ответа тут быть не может.
У любой схемы есть свои преимущества и недостатки.
Выбор напрямую зависит от того насколько ваш УУ далёк от БУ и НУ.
К тому же у вас и схема учёта странная - первоисточником первички выступает БП. Обычно наоборот - весь учёт и документооборот в ERP, а в БП выгружают данные нужные для регламентированного БУ и НУ.
Зачем вам вообще ERP, если БП хватает для ведения первичного учёта?
30 Dmitrii
 
гуру
21.01.22
11:35
(28) >> сервер 1С потребляет не всю доступную память.

Что мешает проверить это утверждение? Запустить выгрузку и посмотреть за показателями. Хотя бы для начала просто в мониторе производительности ОС и в консоли администрирования кластера 1С.
31 RAJAH
 
21.01.22
11:57
(28) Мы удвоили до 256: хотя бы закрытие месяца перестало жаловаться на недостаток памяти.
32 SAURON777
 
21.01.22
12:08
(31) А сколько пользователей у вас работает в ERP?
33 SAURON777
 
21.01.22
12:16
(29) "Зачем вам вообще ERP, если БП хватает для ведения первичного учёта?" - Для бухгалтерского учета хватает БП, а для управленческого не хватает.
"К тому же у вас и схема учёта странная - первоисточником первички выступает БП. Обычно наоборот - весь учёт и документооборот в ERP, а в БП выгружают данные нужные для регламентированного БУ и НУ." - Ранее и БУ и УУ велся в БП, а теперь внедряется ERP.
"Хотя бы для начала просто в мониторе производительности ОС" - ЦП - 35% занято, память - 64%.
34 Dmitrii
 
гуру
21.01.22
12:26
(33) >> в мониторе производительности ОС" - ЦП - 35% занято, память - 64%.

Ну может надо хотя бы по процессам посмотреть. Сколько съедает rmngr, rphost.
Счетчики надо в динамике смотреть. Как и в какой момент они растут. Сравнивать с тем, что показывает консоль кластера по процессам, сеансам и соединениям.
35 RAJAH
 
21.01.22
12:27
(32) При закрытии месяца - 1.
36 Dmitrii
 
гуру
21.01.22
12:29
(33) >> Для бухгалтерского учета хватает БП, а для управленческого не хватает. Ранее и БУ и УУ велся в БП, а теперь внедряется ERP.

Это я понимаю. Вроде не совсем дурачок ))). Но это не ответ на вопрос "зачем?". Что такого делается в ERP после загрузки туда данных из БП? Можно лишь гадать.
Слишком мало вводных данных, чтобы давать какие-то советы.
37 SAURON777
 
21.01.22
12:43
(34) "Ну может надо хотя бы по процессам посмотреть. Сколько съедает rmngr, rphost." - rphost - 20% ЦП, 11400 МБ. rmngr - 0.7% ЦП, 377 МБ. Если в кратце.
38 shuhard
 
21.01.22
12:45
(27) лучше вести учет в одной системе, но есть вышеописанные исключения
39 SAURON777
 
21.01.22
12:48
(36) "Что такого делается в ERP после загрузки туда данных из БП?" - Как минимум на основании перегруженных документов должен формироваться УУ. Как максимум документы там должны быть еще проведены по бух. учету, чтобы в последствии теоретически бухгалтерия могла тоже работать в ERP и не перегружать документы из БП.
40 shuhard
 
21.01.22
12:51
(39)[на основании перегруженных документов должен формироваться УУ]
лажа
нет на стороне БП аналитик для УУ учета, в итоге он будет равен БУ
41 SAURON777
 
21.01.22
12:53
(40) в ERP же есть, для этого и перегружаем.
42 Krendel
 
21.01.22
19:41
(39) ахаха
43 Мимохожий Однако
 
21.01.22
20:16
(39) Телега впереди лошади.ИМХО.
44 hhhh
 
21.01.22
21:10
(39) а 1с точно 64 запустил? может у тебя 32 до сих пор?
45 SAURON777
 
22.01.22
11:19
(44) сервер 1С у нас 64 разрядный, а клиентский 1С - 32 разрядный
46 hhhh
 
22.01.22
11:26
(45) запустите 64-х разрядный клиент. Что вы чудите? Как это вы вообще додумались, ЕРП 2.5, платформа 8.3.20, и запускать 32- клиент?
47 shuhard
 
22.01.22
12:15
(41) жесть
48 Сергиус
 
22.01.22
12:23
(45)Вот здесь и засада может быть.
49 SAURON777
 
22.01.22
23:13
(47) А как будет не жесть?
50 SAURON777
 
24.01.22
09:16
(46) Не помогло
51 Kassern
 
24.01.22
09:19
(45) беда...у вас доходит лимит 4гига на приложение и падает по ошибке. Память освобождается, только когда заканчивает свою работу запускаемая команда. В крайнем случае, можно разбить выгрузку на части, чтобы каждая не выжирала более 4гигов и через ПодключитьОбработчикОжидания запускать комадну выгрузки.
52 Kassern
 
24.01.22
09:20
Можно просто определить период, за который не вывваливается ошибка, и обработчиком ожидания выгружать со сдвигом дат до нужного периода.
53 rphosts
 
24.01.22
09:26
(49) УУ в ЕРП, разумеется.
54 rphosts
 
24.01.22
09:27
(0) лицензия корп - это понятно, а вот обмен... типовой или самописный?
55 SAURON777
 
24.01.22
11:11
(54) Типовой
56 SAURON777
 
24.01.22
17:02
(54) Т.е для обмена БП - ERP желательно использовать лицензии на сервер 1С и клиентские лицензии КОРП?
57 unenu
 
24.01.22
17:16
(56) все же я считаю, что узкое место по вашей теме в коде (который я указал выше), а не в железе/лицухах.
у нас "фаршированное" железо, Корпы и пр. и все-равно типовой обмен в УТ -> БП - это поход черепах на кладку яиц.
58 SAURON777
 
25.01.22
11:57
(57) А какую доработку этой функции/запроса вы бы посоветовали? Какой конкретно поставить отбор и в каком месте?
59 SAURON777
 
25.01.22
12:18
(18) "Если поставить в фильтр параметры периода, то пакет выполнятся около трех секунд" - Поставить параметры ДатаНачала и ДатаОкончания такие же как в остальных частях пакета запроса?
60 SAURON777
 
25.01.22
12:23
(57) Самое интересное, что я делаю перелив документов только за один месяц после переноса остатков из БП в пустую ERP. Т.е. в ERP пока мало что есть. В частности в регистре РегистрНакопления.СебестоимостьТоваров практически нет записей. Видимо в моем случае не здесь находится узкое место.