Имя: Пароль:
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.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший