|
Как посмотреть где утекает память? | ☑ | ||
---|---|---|---|---|
0
torgm
16.06.16
✎
21:47
|
Ут 10.3. ОФ Клиент.
При групповом формировании прайсов с картинками 1с отжирает 3 700 000 памяти, и вываливается с ошибкой "недостаточно памяти для загрузки картинки 1с". |
|||
1
mikecool
16.06.16
✎
22:09
|
кривое формирование прайсов
всякие оформления ячеек вынести уже после формирования прайса, вставку картинок видимо тоже закрывать книги после работы с ними и т.п. |
|||
2
GedKo
16.06.16
✎
22:19
|
перейти на 64битный сервер
|
|||
3
H A D G E H O G s
16.06.16
✎
23:42
|
(0) Смирись.
|
|||
4
Звездец
16.06.16
✎
23:45
|
(0) как вариант прайс возможно очень большой, формируй частями по сегментам
|
|||
5
Torquader
16.06.16
✎
23:47
|
Не зря для струйных принтеров в Windows был придуман механизм печати лентами.
Так что делить прайс на страницы и радоваться жизни. |
|||
6
Asmody
17.06.16
✎
00:04
|
Сколько же у тебя позиций в прайсе?
|
|||
7
Asmody
17.06.16
✎
00:07
|
Вопрос второй: начешуя в современном мире нужен полный прайс с картинками, даже если оно в html?
|
|||
8
Звездец
17.06.16
✎
00:08
|
(6) позиций может и мало, но картинки в фуллхд (ну в смысле большие)
|
|||
9
Torquader
17.06.16
✎
00:08
|
(6) Мне, например, сегодня прислали просто одну картинку, которая открывается полторы минуты (bmp размером пол-гига).
Так что, я думаю, что если люди хотят в прайсе "красивые картинки", то нужно специальное ПО. |
|||
10
Звездец
17.06.16
✎
00:09
|
(9) для этого делается ИМ или электронный каталог-витрина в интернете
|
|||
11
Torquader
17.06.16
✎
00:12
|
(10) Ну, понятно, что нужен каталог с маленькими картинками.
Только ведь прайсы делаются, чтобы в нём было всё и сразу. И обычно это всё пихается в Excel. |
|||
12
Garykom
гуру
17.06.16
✎
00:12
|
(7) Заказчики дятлы, намного проще прайс отдельно, картинки отдельно. И есть привязка одного к другому по названиям или "ссылкам".
|
|||
13
Звездец
17.06.16
✎
00:13
|
(11) никогда не понимал смысла картинок в прайсе. Все равно на них как правило ничего толком не разобрать
|
|||
14
Звездец
17.06.16
✎
00:14
|
Еще как вариант, в прайс можно совать прямую ссылку на картинку, и пусть они подгружаются потом у клиента сами, или по щелчку
|
|||
15
Asmody
17.06.16
✎
00:17
|
(9) При желании можно и 4К-ролик в карточку товара запихать, вот только зачем?
|
|||
16
Звездец
17.06.16
✎
00:22
|
(15) интересно, а сами картинки у него вместо файлов не в базе ли хранятся в добавок ко всему
|
|||
17
Torquader
17.06.16
✎
00:23
|
(15) База SQL всё стерпит, а остальное - можно рядом файлами сложить.
(13) Вот, видимо, (0) хочет, чтобы было "разобрать и посмотреть". (12) Со ссылками и работой с ними в разных системах можно нарваться на множество сюрпризов. Конечно, надпись внизу "картинки не всегда точно соответствуют конкретному товару", спасёт положение, но любимые слова про "если на клетке с тигром написано буйвол..." как раз из этой серии. |
|||
18
Torquader
17.06.16
✎
00:25
|
(16) Я, помнится, во студенчестве на макросах Excel собирал отчёт о научной деятельности, там дофига всякой графики и картинок было, и всё пихалось в один Excel-файл, и там тоже была эта знаменитая ошибка и разделением на несколько файлов она прекрасно устранилась.
|
|||
19
Звездец
17.06.16
✎
00:25
|
(17) а какие проблемы со ссылками на разных системах? если в файле будет ссылка на файл на их веб сервере, наоборот это решает целую кучу проблем
|
|||
20
Garykom
гуру
17.06.16
✎
00:26
|
(17) Да про ссылки то согласен и еще трабла что Ёксель это стандарт де факто.
Хотя PDF в этом плане лучше в разы, а еще лучше специальный сервис по обмену прайсами с 4K картинками. |
|||
21
Torquader
17.06.16
✎
00:26
|
(19) А потом admin на Web-сервере что-то поменяет.
И, 404 ещё лучший вариант. |
|||
22
Torquader
17.06.16
✎
00:28
|
(20) в PDF не сделать расчёт заказа, в отличие от Excel, а для картинок - pdf - самое лучшее, так как будет буклет, который может распечатать любой клиент, в отличие от Excel, которую смотреть ещё можно, но при печати получается такая лажа, что лучше её вообще сразу запрещать.
|
|||
23
Звездец
17.06.16
✎
00:28
|
(21) не, ну это не так все критично. Причем формирование ссылок непосредственно при выгрузке прайса по некоему правилу вполне от этой проблемы избавит
|
|||
24
Torquader
17.06.16
✎
00:32
|
(23) Сделать можно всё, но, если не ставить защиту от дурака, то первый его приход испортит всё и сразу.
|
|||
25
Garykom
гуру
17.06.16
✎
00:34
|
(22) Это с какого перепугу в PDF то не сделать? Да им придется ридер последний ставить чтобы с формами работать.
http://help.adobe.com/ru_RU/acrobat/using/WSC9CAD508-1941-43db-B599-2DCBF7BFC055.w.html#WS4516ED9A-07B3-46c7-B547-E083678A2D44.w |
|||
26
Звездец
17.06.16
✎
00:39
|
(25) ты представь только какой взрыв мозга клиенты устроят когда прайс открыть не смогут
|
|||
27
Звездец
17.06.16
✎
00:40
|
(25) а у многих вообще ридера адобовского может не оказаться
|
|||
28
Garykom
гуру
17.06.16
✎
00:45
|
(27) Прикинь у нас всего 2 МС Офиса на весь офис, а в отделах ни в одном нету ))
LibreOffice как стандарт уже 4 года. |
|||
29
Звездец
17.06.16
✎
00:47
|
(28) я сам на либру перешел, после того как exel валился на форме заявки на лицензии МС, а либра открыла, позволила заполнить и МС после этого заявку принял без проблем
|
|||
30
Torquader
17.06.16
✎
01:03
|
(25) Только в Windows 8 и Windows 10 файлы pdf открывает какое-то урезанное чудо, в котором даже переход по ссылкам не работает.
К Excel, кстати, есть viewer, только в нём формы тоже не работают. (28) Libre открывает pdf на редактирование без проблем. |
|||
31
Torquader
17.06.16
✎
01:05
|
Просто, если к задаче подойти в общем виде, то для "сферического клиента в вакууме" только Web-сайт и остаётся, так как всё остальное у него или не запустится, или запустится не так.
|
|||
32
Garykom
гуру
17.06.16
✎
01:28
|
(31) И что самое смешное что ниша то не занята )) Имеющиеся потуги/поделки даже не смешно.
Нужен с готовой интеграцией с 1С и прочими типовыми. |
|||
33
Звездец
17.06.16
✎
01:30
|
(32) ну уже первая ласточка есть UMI+УНФ, думаю что скоро и еще к другим типовым подтянется
|
|||
34
Torquader
17.06.16
✎
01:34
|
(32) В эту нишу пытаются войти сразу все - потому и не занята, что у каждого "свой подход".
|
|||
35
torgm
17.06.16
✎
09:58
|
(4) (6) формируется порядка 150 прайсов, согласно продуктовым матрицам клиентов.
в каждом прайсе в среднем по 500-1000 позиций. Размер картинки 50-150 кб. вылетает примерно на 70 прайсе. Обработка формирует индивидульно прайс для каждого клиента через использование Обработка=Обработки.ПечатьПрайсЛиста.Создать(); В печатьпрайслиста внесено единственное изменение. Внесена картинка, и добавлен код. мТекущееОсновноеИзображение = Номенклатура.ОсновноеИзображение.Хранилище.Получить(); Если ТипЗнч(мТекущееОсновноеИзображение) = Тип("Картинка") Тогда СекцияНоменклатура.Рисунки.D1.Картинка=мТекущееОсновноеИзображение; Иначе СекцияНоменклатура.Рисунки.D1.Картинка=Новый Картинка; КонецЕсли; |
|||
36
4St
17.06.16
✎
10:14
|
Полученный ТабличныйДокумент с картинками после каждой итерации(каждого клиента) куда-то выгружается? Или остаётся висеть в памяти?
|
|||
37
torgm
17.06.16
✎
10:22
|
(36) Сохраняется в эксель.
Сам код формирования. ДокументРезультат=Новый ТабличныйДокумент; Обработка.ПечатьПрайсЛиста(ДокументРезультат); |
|||
38
Звездец
17.06.16
✎
10:24
|
(35) вылетает примерно на 70 прайсе
после сохранения сам эксель ты завершаешь? |
|||
39
torgm
17.06.16
✎
10:26
|
(38) та он без участия экселя сохраняется , стандартными методами.
|
|||
40
vde69
17.06.16
✎
10:27
|
(35) на каждый прайс (кусок) запускай отдельное регламентное задание и все будет нормально...
|
|||
41
torgm
17.06.16
✎
10:33
|
(40) Такой вариант понятен. Под это дело тогда отдельный регистр сведений надо будет прописать, с признаком выгружен прайс или нет.
Есть некоторое извращенное желание решить задачу в лоб. |
|||
42
H A D G E H O G s
17.06.16
✎
10:38
|
(41) Не получится. 1С объекты кэширует, причем делает это неверно.
|
|||
43
ovrfox
17.06.16
✎
10:47
|
Самое простое решение - добавить память на сервер!
|
|||
44
4St
17.06.16
✎
10:47
|
(37) этот код выполняется в цикле для каждого клиента? Что потом происходит с ДокументРезультат?
|
|||
45
mistеr
17.06.16
✎
11:32
|
(35) >Размер картинки 50-150 кб
Это в JPEG? А в памяти наверное 1.5 Мб будет. Вот и считай, полтора гига га прайс. Плюс картинки наверное не выгружаются из памяти после завершения прайса, пот и результат. И посмотри та графике, как потребление памяти растет, линейно или "пилой". |
|||
46
vde69
17.06.16
✎
11:52
|
(45) там все гораздо проще....
память выделяется под каждую картинку и какое-то время этот кеш живет на сервере сам по себе в памяти... (41) можно попробовать в одном потоке делать пауз в 15 сек после выгрузки одного прайса, по идеи должно помочь, только учти, что на сервере с заданием паузы придется извращаться, по моему проще с отдельными рег заданиями... |
|||
47
H A D G E H O G s
17.06.16
✎
11:57
|
(46) Не поможет. Памяти не хватает на клиенте. Клиент не отпускает память, пока работает код пользователя.
|
|||
48
4St
17.06.16
✎
11:58
|
(35)
Еще вариант - переделать это на запрос мТекущееОсновноеИзображение = Номенклатура.ОсновноеИзображение.Хранилище.Получить(); Если ТипЗнч(мТекущееОсновноеИзображение) = Тип("Картинка") Тогда СекцияНоменклатура.Рисунки.D1.Картинка=мТекущееОсновноеИзображение; Иначе СекцияНоменклатура.Рисунки.D1.Картинка=Новый Картинка; КонецЕсли; Чтобы объект справочника Номенклатура не шел в кэш. Формирование будет идти дольше, но и это можно победить. |
|||
49
mistеr
17.06.16
✎
11:59
|
(47) Откуда знаешь, что на клиенте?
|
|||
50
GANR
17.06.16
✎
11:59
|
(0) +1(3). Не надо эти картинки в прайсы выводить. 1С - не программа для 3D-графики.
|
|||
51
H A D G E H O G s
17.06.16
✎
11:59
|
Автору не поможет ни-че-го.
Расслабьтесь. Обычно помогал переход на 64x винду, но судя по падению на 3.7 гиг - это уже сделано. |
|||
52
H A D G E H O G s
17.06.16
✎
12:01
|
(49) Чую.
|
|||
53
GANR
17.06.16
✎
12:02
|
(51) Даже отрубание головы не поможет от головной боли?
|
|||
54
Garykom
гуру
17.06.16
✎
12:04
|
(53) ТС до той головы не дотянется
|
|||
55
GANR
17.06.16
✎
12:07
|
Остается прайсы маленькими порциями формировать - по 10 или 20 штук и каждый раз сеансы передергивать. Очень профессиональный выход.
|
|||
56
vde69
17.06.16
✎
12:09
|
(47) сейчас практически все переведено на асинхронное выполнение, все типовые обработки выполняются на сервере в регламентом задании которое запускает клиент а не шедуллер, по этому клиент не может ничего держать на сервере...
разумеется если сабж возникает не в регламентом потоке а непосредственно в модуле формы с передачей контекста на сервер - то тут действительно автору не помочь ничем... |
|||
57
samozvanec
17.06.16
✎
12:14
|
(0) Картинки = Новый COMОбъект("WIA.ImageFile");
Процесс = Новый COMОбъект("WIA.ImageProcess"); вот этим можно порезать картинки, память экономит сильно. качество теряется не сильно. |
|||
58
Cyberhawk
17.06.16
✎
12:26
|
Вроде же в (0) написано "1с отжирает 3 700 000 памяти" - явно это смотрели на клиентский процесс, а не серверный
|
|||
59
torgm
17.06.16
✎
12:58
|
(57) Этим картинки уже порезаны, перед загрузкой в хранилище.
|
|||
60
4St
17.06.16
✎
13:16
|
(35)
"формируется порядка 150 прайсов, согласно продуктовым матрицам клиентов. в каждом прайсе в среднем по 500-1000 позиций. Размер картинки 50-150 кб. вылетает примерно на 70 прайсе" Предположим, что основную часть оперативы занимают именно картинки. На каждый прайс будет потрачено от 25 до 150 МБ Умножаем на 70 прайсов, получаем от 1750 до 10500 МБ. Цифра 3700 лежит как раз в этом диапазоне. Память точно не будет очищаться, если где-то при выполнении кода остаются ссылки на ДокументРезультат. Поэтому в первую очередь я бы отрабатывал именно этот вариант. |
|||
61
4St
17.06.16
✎
13:17
|
(56) Ут 10.3. ОФ Клиент.
|
|||
62
torgm
17.06.16
✎
13:42
|
(60) ДокументРезультат после каждого цикла обнуляется
|
|||
63
samozvanec
17.06.16
✎
13:45
|
(59) режь сильнее)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |