Имя: Пароль:
1C
 
Ошибка нехватки памяти при построении отчета на СКД
0 mzelensky
 
17.08.18
10:54
Доброго всем.

Платформа 1С:Предприятие 8.2.19.130 в режиме совместимости с 8.1.
Клиент 1С 32 битный
Сервер 1С 64 битный
Серверная база на скуле.
На сервере 128 ГБ оперативки

Формирую отчет на СКД - успешно получаю выборку в 240 000 строк.
Ничего не меняя запускаю формирование отчета еще раз и система вываливается с нехваткой памяти. Открываю предприятие заново, опять формирую этот отчет точно так же - успешно выводится. Запускаю второй раз - падает с нехваткой памяти.

Пробовал делать так - сперва формирую большую выборку на 240 000 (формируется успешно), потом формирую с отборами так, что выборка на 20-50 000 элементов - формируется нормально. Затем снова делаю большую выборку - падает от нехватки памяти!

Такое ощущение, что какие-то данные не обнуляются, а накапливаются и приводят к переполнению.

Вопрос - почему ВТОРОЙ раз системе не хватает памяти? Куда капать?
1 mzelensky
 
17.08.18
10:56
Сюда скидывать запрос пока не буду - он довольно большой + конфа не типовая.
2 DrShad
 
17.08.18
11:01
капать на голову тому кто писал отчет
3 mzelensky
 
17.08.18
11:20
(2) Еще идеи?
4 Nikoss
 
17.08.18
11:22
(3) полное обслуживание базы сделай, со стороны SQL
5 МешочекЗнаний
 
17.08.18
11:23
(0) Попробовать 1 раз сформировать, закрыть отчёт, а потом 2 раз сформировать .
6 mzelensky
 
17.08.18
11:28
(5) Пробовал - на второй раз всегда вылетает
7 mzelensky
 
17.08.18
11:29
(4) что имеется ввиду под "Полным" ?

Реиндексация
Реструктуризация
Проверка на ошибки

?
8 mzelensky
 
17.08.18
11:42
Было подозрение, что система не очищает временные таблицы. Сделал явную очистку в запросе. Результат тот же.
9 Nikoss
 
17.08.18
11:54
(7) про MSSQL не подскажу. Что-то типа - "Почистить базу от всякого дерьма"))
10 mzelensky
 
17.08.18
11:57
(9) НУ и как ты советуешь, если сам не понимаешь что именно ты советуешь?
11 Nikoss
 
17.08.18
12:03
(10) что значит не понимаю? Я тебе посоветовал сделать полное обслуживание базы средствами SQL. Всё. Это может помочь, а может и не помочь, но все равно лишним не будет.
Как это сделать в MS, уж потрудись посмотреть в интернете.
12 mzelensky
 
17.08.18
12:08
Получается следующее - когда запускаю первый раз на большую выборку, то процесс выедает 3200 Мб памяти, но при этом заканчивается успешно и выводит отчет. После этого Память так и висит "3200".

Запускаю после этого второй раз - память падает где-то до 1500 и потом нарастает до 2300 примерно и на этой цифре выпадает ошибка нехватки памяти.
13 mzelensky
 
17.08.18
12:10
(11) Это называется -

- Доктор, у меня болит нога!
- Ну вот вам таблеточка от головы.
- Но ведь у меня болит не голова, а нога
- Ну ничего, хуже точно не будет, а том может и нога пройдет.
14 Nikoss
 
17.08.18
12:11
(12) ты точно адекватную таблицу выводишь? 32-битный клиент совсем не резиновый.

И да про SQL возможно мимо совет, так как падает именно клиент, на сколько я понимаю.
15 Вафель
 
17.08.18
12:11
отчет - просто СКД без кода?
16 Nikoss
 
17.08.18
12:14
+(14) я понимаю, что вопрос в том почему именно во второй раз идет падение. Но тут скорее всего платформа просто что-то не очищает из памяти, и ничего ты с этим не сделаешь.
17 mzelensky
 
17.08.18
12:14
(15) Был код, который запускал формирование СКД.

Ради теста убрал, оставил чистый запрос + типовую кнопку "сформировать" - результат абсолютно тот же.
18 mzelensky
 
17.08.18
12:16
"Но тут скорее всего платформа просто что-то не очищает из памяти, и ничего ты с этим не сделаешь"

- вот я тоже думаю, не дело ли в "8.2.19.130 в режиме совместимости с 8.1"
19 Nikoss
 
17.08.18
12:18
(18) тут дело даже не в платформе. Просто у тебя выборка уже на грани максимума по памяти. Ты просто дождешься момент когда в ней будет 300 000 строк и она просто даже с первого раза не будет работать.
20 mzelensky
 
17.08.18
12:21
все-равно не ясно. Почему при первой выборке память доходит до 3400, а во второй сыпется на 2300 ?
21 kittystark
 
17.08.18
12:21
обновить платформу и запустить клиента х64 ?
22 mzelensky
 
17.08.18
12:22
(21) Была такая идея, но это не в ближайшем будущем - много подготовительных работ
23 kittystark
 
17.08.18
12:27
(22) помогает!
однако есть обратная сторона - раньше пользователь отваливался на мега отчетах, а сейчас как посмотришь
5 Гб процесс отожрал...
9.5 Гб...
рекорд был 14.5 Гб - и это на серваке с 32 Гб оперативки
24 ildary
 
17.08.18
12:31
(23) простите моё любопытство, но что за данные выводил этот мега-отчёт? Продажи по всем магазинам Магнита в разрезе товаров и документов?
25 mzelensky
 
17.08.18
12:33
(24) Информацию по дисконтным картам покупателей + накопления и продажи по ним.
26 kittystark
 
17.08.18
12:38
(24) почти угадал :)
по всем товарам / по городам / по всем клиентам: прибыль/количество и в сравнении по годам за 3 года сразу

жесть :)
27 Tonik992
 
17.08.18
12:40
(26) Эксперты в отделе аналитике сидят повидимому.
28 Nikoss
 
17.08.18
12:46
(24) тут скорее вопрос, что потом с таким количеством буковИцифор делать в одном месте
29 Nikoss
 
17.08.18
12:48
(20) там не так, это ты видишь 2300, а на сомом деле к этим 2300 вмиг 1С пытается добавить, к примеру, еще 2000 и досвидос. То что в диспетчере(ну или где смотришь) посекундно же, а в секунде еще 1000 миллисекунд есть.
30 Юрий Юрьевич
 
17.08.18
12:55
в параметрах кластера сервера 1С Предприятия есть Режим распределения нагрузки - Приоритет по памяти или по производительности; как правило приоритет по памяти позволяет вытягивать значительно большие нагрузки. Но это все конечно про 8.3.
Ошибка? Это не ошибка, это системная функция.