Имя: Пароль:
1C
1С v8
"Недостаточно памяти" при формировании Главной книги.
0 К_Михаил
 
08.06.12
14:13
Здравствуйте.

Сервер 1С    - v8.2.14.540 [x86-64]
Платформа    - 1С Предприятие v8.2.14.540
Конфигурация - БГУ v1.0.10.2
БД           - MS SQL Server 2008 R2 [x64]

ОС сервера   - Windows 2008 Server R2 Enterprise [x64]
ОЗУ сервера  - 48 ГБ

Такая проблема: не могу сформировать отчет "Главная книга". Платформа долго формирует, затем выдает сообщение "Недостаточно оперативной памяти".

Есть у кого соображения, в какую сторону рыть?
1 DrShad
 
08.06.12
14:14
план счетов меняли?
2 К_Михаил
 
08.06.12
14:16
(1) Добавляли свои специфичные счета и субконто к некоторым стандартным.
3 ansh15
 
08.06.12
14:27
Памяти  недостаточно на сервере, или на клиентском рабочем месте? На сервере, вроде, не должно.
4 DrShad
 
08.06.12
14:30
(2) ну вот туда и копать
5 К_Михаил
 
08.06.12
14:31
(3) И на сервере и на клиенте не хватает. Клиенты под терминалом.

Пробовал всех выгонять, перезагружать сервер, делать заново. Все равно, занятая память достигает ~12 ГБ и выдается сообщение.
6 К_Михаил
 
08.06.12
14:33
(4) Каким образом?
7 DrShad
 
08.06.12
14:34
какие субконто добавили? кто добавил и зачем? у тя скорее всего столько таблиц в результат запроса выбрано, что скуль дохнет
8 К_Михаил
 
08.06.12
14:36
Кстати, книгу формирую за месяц. При формировании 1-29 числа всё формируется (16 ГБ ОЗУ). При формировании 1-30 числа - не хватает памяти (при занятой 12 ГБ)
9 ansh15
 
08.06.12
14:37
(5) В диспетчере задач посмотри, какие процессы конкретно отбирают память.
10 К_Михаил
 
08.06.12
14:38
(9) Больше всех 1cv8.exe - 3 ГБ.
11 DrShad
 
08.06.12
14:54
(9) помогло?
12 К_Михаил
 
08.06.12
14:57
SQL-серверу выделено 30 ГБ памяти. Ему должно хватать. Видимо, в платформе дело. Пытаюсь, мониторю...
13 Ayvengo
 
08.06.12
14:58
(12) ребутни сервер :)
14 К_Михаил
 
08.06.12
14:59
(13) уже много раз
15 DrShad
 
08.06.12
15:01
(14) в 30-х числах не игрались ручными операциями? другие отчеты формируются?
16 dmpl
 
08.06.12
15:13
(10) Ну все, 1С уперлась в ограничение 32-битного режима.
17 Ayvengo
 
08.06.12
15:15
(14) и тестировал, наверное, тоже?:)
18 ansh15
 
08.06.12
15:44
(11) Мне? Иногда помогает, по крайней мере, видно, что виснет, или postgresql(в моем случае) гребет под себя из-за плохого плана запроса, или rphost тупо и нудно что-то выполняет.
Товарищу про (7) и (15) пока не очень хочется думать, поэтому до упора будут ковыряться платформа или SQL. Хотя то, что ты спрашиваешь, наиболее вероятно( именно у бюджетных бухгалтеров).
19 К_Михаил
 
08.06.12
16:31
Погонял счетчики производительности.. печально.

Сначала долго работает SQL, периодически прерываясь rphost'ом. Затем sqlservr утихает, rphost набирает 6 ГБ оперативки. Затем 1cv8 набирает ОЗУ > 3,9 ГБ и выдаёт оошибку :(

Похоже, дело действительно в 32-bit клиенте. Нет решения?
20 ansh15
 
08.06.12
17:13
(19)Написать письмо в 1С, чтобы выпустили 64-bit клиента. Может в 8.3 будет, хотя бы под linux...
А если формировать за предыдущие месяцы или с 1 по 29, то 1с8 в верхнюю планку не упирается, скорее всего. Оставь платформу в покое, прислушайся к DrShad.
21 К_Михаил
 
08.06.12
17:40
DrShad, ручных операций у нас всегда много, к сожалению. Сказывается недопиленность конфига под организацию/удаленность от города/пофигизм.

Остальные отчеты формируются.
22 Ayvengo
 
08.06.12
18:01
ТС, а сколько всего максимум субконто у тебя?:)
23 Ayvengo
 
08.06.12
18:02
(22)- более понятно, максимальное количетво субконто сколько?
24 Ayvengo
 
08.06.12
18:13
не больше 5 случайно?
25 dmpl
 
08.06.12
21:25
(19) Если вылезло только сейчас - возможно, где-то происходит зацикливание. Посмотри за предыдущие периоды сколько памяти уходит. Если намного меньше - это оно. Надо найти кривизну в данных и исправить.
26 К_Михаил
 
09.06.12
04:13
(23) максимальное количество субконто - 4

(25) Если бы знать, как... что понимается под "кривизной"? По какиим признакам можно вычислить "кривые" данные?
27 К_Михаил
 
09.06.12
05:01
(25) Сформировал за предыдущий месяц - получилось. Видимо, проблема как раз в нужном мне месяце.
28 ЧеловекДуши
 
09.06.12
05:19
Интересно, а кто нибудь рассматривает вариант оптимизации запроса по главной книге? :)
29 К_Михаил
 
09.06.12
05:32
(28) Здравая мысль, имеющая смысл при соответствующих навыках.
30 К_Михаил
 
09.06.12
05:43
Скриншот с проблемным участком кода. Думаю, вам это даст больше информации, чем мне.

http://impic.ru/uploads/2012/0906/2280403_97872634.jpg
31 vis_tmp
 
09.06.12
05:46
Добавленные субконто определённого типа?
32 К_Михаил
 
09.06.12
05:57
(31) Нет. Где-то добавлены "Контрагенты", где-то "Направление деятельности"
33 К_Михаил
 
09.06.12
05:59
(31) К некоторым счетам добавлено даже по 2 субконто. Вот, еще заметил "Номенклатура" как доп. субконто.
34 dmpl
 
09.06.12
08:11
(27) А по памяти сколько заняла при формировании? Если много меньше предела - надо искать кривые данные. Для начала можно попробовать замером производительности вычислить, где крутится код во время роста памяти - и дальше там уже смотреть, нет ли чего необычного в данных. Найти эти кривые данные может быть непросто, т.к. кривизна может быть неявной, а в сочетании с другими данными.

(30) Попробуй заменить


Пока Истина Цикл


на


А = 0;
Пока А < 15000 Цикл
А = А + 1;


и посмотри, что будет сформировано по первым 15 тыс. итераций. Возможно, зациклившиеся данные вылезут.
35 Coldboy
 
09.06.12
09:53
(0) смотр пост (34) ОН правильно говорит, тока я делал так я выводил кусками, брал общее количество кусов делил на 1\4 от общего количества памяти, и выводил эти куски отщепляя от итераций. Наглядно выглядит так.

У меня массив был 34 000, его нужно было обработать, и почему то вылетало "Недостаточно памяти", все сразу не срабатывало.
Памяти 4 000 МБ, 1\4=1000, и брал от массива куски по 1 000 , и пока количество начального массива 0 не будет, то обрабатывать это все.
36 serg_sh75
 
09.06.12
11:02
(0) Сделай ТиИ базы это раз, пересчет итогов это два (только про бэкап не забудь)
37 serg_sh75
 
09.06.12
11:04
(0) уверен на 99% что если эту базу выгрузить в файловую - отчет сформируется. Так что смотри в сторону ошибок БД
38 К_Михаил
 
09.06.12
11:16
(34) Мде. Даже 15000 оказалось много. Вываливается. Пробую меньше.
39 Coldboy
 
09.06.12
11:43
(38) я же написал что 15 000 много сделай поменьше как я описал.
40 К_Михаил
 
13.06.12
12:38
(37) ТиИ не поможет, пробовал. В файловом режиме не формируется. Та же нехватка памяти.

(39) Делал даже А < 5, и даже в файловой базе, всё равно - медленное переполнение и нехватка памяти.

А как запустить замер производительности 1С, чтобы можно было контролировать временную шкалу? Чтобы выяснить, в какой момент времени начинается рост памяти?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший