|
Борьба с утечками - событие leak в ТЖ | ☑ | ||
---|---|---|---|---|
0
Господин ПЖ
10.02.14
✎
13:26
|
и анализ их Инструментарием разработчика (с) TormozIT
Есть эпичный документ в отраслевом решении от некого франя... Полный набор - запросы в цикле, использование Вычислить(""), полное отсутствие кэширования повторяющихся уже ранее вычисленных значений, эпическое значение количества движений по РН - в один РН 900, во второй 850 000(!!), в третий 860 000(!!). На вопрос - с какого этажа бухам выбрасываться - работать невозможно идет стандартный ответ - купите сервер 1с 64-бит и все будет хорошо. Как это поможет несчастному клиенту, который жрет свои несчастные 2Гб при проведении просто ложками и падает с нехваткой памяти - хз... на серваке чуть получше - там система 64 и клиенту хватает 3,5Гб чтобы пережевать этот документ. Все встает колом на 10 минут, но документ проводится. Отладчик с включенным "замер производительности" заставляет понять/обнять/простить... Ради смеху врубил ТЖ с событием leak - анализ ТЖ показывает что есть утечки... но встает вопрос - а как их оценить количественно? Стоит ли игра свеч, даст ли правка мест вызывающих утечку к кардинальному улучшению ситуации на клиенте? В Инструментарии от TormozIT я вижу только момент времени + куски кода вызывающие событие, а как-то оценить какой ущерб дает этот кусок кода - сколько памяти "украдено" можно увидеть? Или только опытным путем - правка кода и повторный запуск + мониторинг использования памяти в диспетчере задач? |
|||
1
ЗлобнийМальчик
10.02.14
✎
13:52
|
(0) я подозреваю, если документ должен сгенерировать и записать в базу данных 1,5 млн записей по нетривиальному алгоритму, то никакой анализ утечек памяти вам не поможет.
|
|||
2
Господин ПЖ
10.02.14
✎
14:14
|
>документ должен сгенерировать
насчет того что он должен - это еще вопрос >1,5 млн записей по нетривиальному алгоритму любой алгоритм становится нетривиальным если лупить одним запросом 900 раз в базу с одним и тем те параметром, а потом бегать по тз до озверения параллельно пытаясь заструячить 1,5 лимона записей. Тут любой клиент скукожится. Вопрос более изыскательный - определение стоит ли игра свеч, попытка опттимизировать пользоание памятью, оставляя за скобками количество движений и точку приложения - клиент/сервер |
|||
3
foxruby
10.02.14
✎
14:40
|
(2) Имхо леаки против кривого кода - легкий насморк против "гусарского".
|
|||
4
mistеr
10.02.14
✎
14:43
|
(0) >а как-то оценить какой ущерб дает этот кусок кода
Закомментировать его. Хрен с ним, что неправильно проведется, зато увидищь разницу. |
|||
5
H A D G E H O G s
10.02.14
✎
14:46
|
(2) Что за отраслевое?
|
|||
6
Господин ПЖ
10.02.14
✎
14:53
|
(5) нахлабучка к УПП
|
|||
7
Господин ПЖ
10.02.14
✎
14:58
|
просто сейчас понятно что эти бредни про "купите сервер 1С" ничего не дадут... почему франь сам понять не хочет что он себе яму роет подобными заявлениями - моя не понимай, вот возьмут же, купят.Что потом они клиенту мямлить будут когда увидят что клиент на компе буха все так же сворачивается в ковер?
и сия поделка еще имеет статус совместимо и официально продается. Поглядели бы хоть в типовые документы, как там проведение/заполнение аналитики сделано... |
|||
8
Shrek_yar
10.02.14
✎
15:02
|
(7)что мешает исправить запросы хоть в одном документе и посмотреть?
|
|||
9
Maxus43
10.02.14
✎
15:03
|
(7) Франчи - позор 1с, от нас то чего? Тут надо переписывать код, логику...
|
|||
10
Господин ПЖ
10.02.14
✎
15:04
|
еще более интересно что 850 000 записей после выгрузки в ТЗ и .Свернуть() по измерениям/реквизитам превращаются в 8 000 строк...
|
|||
11
Лефмихалыч
10.02.14
✎
15:07
|
(0) не могу понять, что тебе даст количественная оценка утечек. Франч перестанет мычать мантру про 64хбитный сервер? оценка избавит тебя от необходимости оптимизировать этот быдлокод?
Вроде бы напрашивается "нет" на оба вопроса. Так зачем тратить время? |
|||
12
Господин ПЖ
10.02.14
✎
15:07
|
(8) выбудете смеяться... править нечего за "наличием отсутствия" запросов как таковых... один раз что-то выгребается из базы, а потом уличной магией, циклами по ТЗ "брюки элегантно превращаются" в 1 500 000 записей.
|
|||
13
mistеr
10.02.14
✎
15:08
|
(7) Вообще-то "совместимо" <> "идеальный код". У каждого решения есть предел масштабируемости, у этого вот такой маленький.
Пробуй уговорить клиента на оптимизацию. Но я бы на его месте сто раз подумал: лишиться поддержки, променять целую контору на одного умельца как-то не очень. Может они а следующей версии как раз все оптимизируют. :) Может стоит договариваться с разработчиком: типа давайте я вам оптимизирую, оплатите 50/50 с данным клиентом. А то и 60/60 :) |
|||
14
Господин ПЖ
10.02.14
✎
15:09
|
>не могу понять, что тебе даст количественная оценка утечек
ну как что - однократная "утечка" в 10 Кб - это "мелочи жизни"... leak 10 кб * 900 000 раз - это уже что-то... |
|||
15
Эмбеддер
10.02.14
✎
15:09
|
(10) чтобы не портить их код, в подписке на событие можно свернуть)))
|
|||
16
Maxus43
10.02.14
✎
15:09
|
(10) а как же тогда в регистр вобще записывается? там же будет ошибка про запись с одинаковыми измерениями...?
|
|||
17
Лефмихалыч
10.02.14
✎
15:09
|
(14) ну, ладно. Ну, нашел ты эту "уже что-то". Дальше что?
|
|||
18
Эмбеддер
10.02.14
✎
15:10
|
(14) а причина утечек памяти в 1С 8-ке в чем? ошибки в платформе или плохой код?
|
|||
19
H A D G E H O G s
10.02.14
✎
15:11
|
(16) Смножение с какой-нибудь другой таблицей, разворот по вложенным реквизитам измерений, мало ли
|
|||
20
H A D G E H O G s
10.02.14
✎
15:12
|
Так отраслевое - Совместное, или Совместимое.
Что за отрасль такая? |
|||
21
Эмбеддер
10.02.14
✎
15:13
|
(16) регистр сведений так заругается, регистр накоплений нет
|
|||
22
Господин ПЖ
10.02.14
✎
15:14
|
(17) убрать утечки, купировать проблему и дать людям возможность работать нормально. Дальше уже франь пусть сидит и переписывает.
|
|||
23
Господин ПЖ
10.02.14
✎
15:14
|
(18) и так и так бывает.
|
|||
24
Господин ПЖ
10.02.14
✎
15:16
|
(22) + просто снизить потребление памяти на клиенте до приемлимого уровня... заставить франь переписать решение и "задвинуть" проведение на сервер - это дело не 5 минут... И тогда когда будет падать rphost у них будет хотя бы право петь эти мантры про 64-бита.
|
|||
25
H A D G E H O G s
10.02.14
✎
15:18
|
Тут дело не в утечках вовсе, а тупо в потребляемой памяти
|
|||
26
Господин ПЖ
10.02.14
✎
15:21
|
(25) если они имеют свойства накапливаться то нужна количественная характеристика - из-за утечки в этой строке мы зря потратили/потеряли 300 Мб памяти - они не высвобождались вовремя...
|
|||
27
Господин ПЖ
10.02.14
✎
15:24
|
>Может стоит договариваться с разработчиком: типа давайте я вам оптимизирую, оплатите 50/50 с данным клиентом. А то и 60/60 :)
нам своих проблем хватает, просто обратились с просьбой помочь - даст ли покупка сервера какой-то выхлоп... исходя из текущей картины мне все это кажется крайне сомнительным... а переписывать за франь - нафиг-нафиг... пусть сами пишут |
|||
28
H A D G E H O G s
10.02.14
✎
15:26
|
(26) Утечки памяти - это НЕ потеря памяти.
|
|||
29
H A D G E H O G s
10.02.14
✎
15:27
|
Тут проще по коду отладчиком-замером производительности пройтись по тяжкому документу - и все станет ясно.
|
|||
30
Господин ПЖ
10.02.14
✎
15:27
|
то что запрос лупит в базу 900 раз - тоже залет, но на фоне эпического кол-ва записей выглядит мелочью и просто "кагбэ сигнализирует" о качестве кода
|
|||
31
Лефмихалыч
10.02.14
✎
15:29
|
чо-то мне подсказывает, что найти эти 20% какашек, ликвидация которых даст 80% результата, будет так же трудоемко, как переписать нафиг всё проведение
|
|||
32
Господин ПЖ
10.02.14
✎
15:31
|
>Тут проще по коду отладчиком-замером производительности пройтись по тяжкому документу - и все станет ясно
что станет ясно? что Движения.Блабла1.Добавить() выполняется 800 000 раз, а потом Движения.Блабла2.Добавить() еще столько же... люди очевидно ни один типовой документ не открывали - как там проведение организовано - я пока такой вывод делаю по замеру (30) отнимает большое кол-во времени, но на общем фоне кеширование это хозяйства эффекта не дает - ибо капля в море |
|||
33
H A D G E H O G s
10.02.14
✎
15:38
|
(32) Ты программист или где.
Да, медленно и верно правь косяки. Или не правь. Ты что хочешь, отчет по утечкам? Ну будет тебе отчет по утечкам, по которому у тебя утечет 10-12 Мб памяти. Проблема же не в этом. |
|||
34
H A D G E H O G s
10.02.14
✎
15:40
|
Проблема в
1) Пожираемой памяти и вылете клиента. 2) Тормознутости. Так? Если так, то: 1) Переписываем алгоритмы, по которым - избавляемся от гиганских таблиц, или переносим их обработку на сервер, где поможет 64. 2) Кэшируем, убираем вычислить, убираем запрос за цикл, и.т.д. Все это делать придется тебе. |
|||
35
Господин ПЖ
10.02.14
✎
15:44
|
>Ну будет тебе отчет по утечкам, по которому у тебя утечет 10-12 Мб памяти.
да, 10 мб погоды не сделает >Все это делать придется тебе. не... есть "изготовитель" - пусть обучает своих "IT-узбеков" писать нормально... а не сказки про 64-бит рассказывает я код типа: ЗначениеСубконто = Вычислить("СтрокаТз.Субконто" + к); видел только в "Конвертации" - накой он там я могу понять... |
|||
36
Лефмихалыч
10.02.14
✎
15:44
|
(33) он хочет отчет, который ему покажет те 3-5 мест из 80ти, которые, если поправить, то даст овер 9000 прироста производительности
|
|||
37
Жан Пердежон
10.02.14
✎
15:47
|
(35) что хоть за таинственный изготовитель? страна должна знать своих героев в лицо!
|
|||
38
Господин ПЖ
10.02.14
✎
15:48
|
(36) >те 3-5 мест из 80ти, которые, если поправить, то даст овер 9000 прироста производительности
при таком количестве движений по РН никто производительности не ждет особой - запись этого хозяйства в таком объеме сама по себе перекрывает все потуги с кэшированием. Пока речь хотя бы о вменяемом размере клиента. Сейчас хватает 3,5 Гб. Что через месяц/год будет... |
|||
39
Лефмихалыч
10.02.14
✎
15:53
|
(38) ну, чо ты к словам-то придираешься? Все ж всё поняли - ты борешься за оперативу
(37) бери любого франча. Наугад. Просто любого. И у него или была, или есть, или вот-вот будет в точности почти такое поделие с синим, как на курьйих яйцах, штампом "Совместимо" |
|||
40
Demasiado
12.02.14
✎
16:09
|
(38) Нашлепка случайно не связана с казначейством или бюджетированием?
|
|||
41
Господин ПЖ
12.02.14
✎
16:11
|
(40) нет
|
|||
42
Господин ПЖ
12.02.14
✎
16:13
|
накрутили хвост - они чего-то сделали - вроде начало работать... надо зайти поглядеть что в коде поменялось - некогда пока
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |