|
Утечки памяти в 1с | ☑ | ||
---|---|---|---|---|
0
Impuls20_03
12.04.16
✎
11:52
|
Добрый день эксперты. Столкнулся с проблемой утекания памяти в 1с. Сперва я грешил на свою хроническую криворукость, но после сокращения примера до минимума пришел к выводу что дело не совсем во мне.
В общем суть проблемы: Каждые 10 секунд создается несколько фоновых заданий. В каждом фоновом задании создается HTTPСоединение до сайта, который отдает данные в JSON. Далее с помощью ЧтениеJSON ответ парсится и передается в форму с помощью ПоместитьВоВременноеХранилище, которая и отображает результат. Помещаются данные каждый раз по одному и тому же адресу. Собственно схема мутная но работает и, на время запросов, не вешает основной поток программы. Проблема в том, что 1с-ка медленно но верно отжирает память у системы пока не сожрет ее полностью. Проблема усугубляется еще и тем, что через какое-то время (когда сожрется примерно 500Мб памяти) начинает люто тормозить и интерфейс, а процессор загружается на 100%. Дальше больше. Закрываем форму - память не кушается, но и старая память не освобождается. Открываем фору - память продолжила течь. Собственно начал упрощать проблему, которая свелась вот к такому: На форме две кнопки. Одна вызывает сервеную процедуру с параметром, другая без параметра. И в том и в другом случае память течет, но течет с разной скоростью (с параметром быстрее), и 1с-ка эту отожранную память повторно не использует.
И, если в текущем варианте память течет медленно, то в моем варианте с фоновыми заданиями 1с-ка перестает подавать признаки жизни уже на 5-й минуте полета. Забыл сказать. Проверял на самой свежей на текущий момент: 1С:Предприятие 8.3 (8.3.7.2008). Собственно буду ждать любых предложений как можно побороть данную проблему, или где я косякнул. |
|||
1
Fragster
гуру
12.04.16
✎
11:55
|
серверные процедуры пустые?
|
|||
2
пипец
12.04.16
✎
11:58
|
||||
3
Impuls20_03
12.04.16
✎
12:09
|
В тестовом варианте серверные процедуры пустые. В моем естественно что нет.
|
|||
4
nordbox
12.04.16
✎
12:22
|
Impuls20_03, хочешь по развлекаться??
сделай форму, можешь даже обычную, сделай пустую процедуру какую нибудь и поставь ее вызов в Процедуру ОбновлениеОтображения этой формы Понаблюдай за загрузкой проца и памятью )) |
|||
5
Impuls20_03
12.04.16
✎
12:25
|
Кстати. По истине чудесный форум. Вот только тему создал - так сразу все стало работать нормально. Видимо ЦМС сайта разработана с использованием экстракта подорожника.
Правда я теперь вообще ничего не понимаю. 20 минут назад память текла безбожно и за 1000 серверных вызовов все ложилось. А теперь все работает. Конечно память потихоньку испаряется, но уже не так как было. В конфе ничего не менял))) Прям загадка. to nordbox. Таки это ненормальное поведение, или вы указываете что я где-то сильно касячу? |
|||
6
nordbox
12.04.16
✎
12:28
|
(5) Я не говорю что ты косячишь,
я говорю то что есть, то с чем я сталкивался |
|||
7
Fragster
гуру
12.04.16
✎
12:35
|
вот такую обработку запустил (без отладки), за 10 минут, вроде, ничего не утекло
&НаКлиенте Процедура ПриОткрытии(Отказ) ПодключитьОбработчикОжидания("ДергаемСерверБезКонтекста", 0.1, Истина); КонецПроцедуры &НаКлиенте Процедура ДергаемСерверБезКонтекста() ДергаемСерверБезКонтекстаНаСервере(); ПодключитьОбработчикОжидания("ДергаемСерверБезКонтекста", 0.1, Истина); КонецПроцедуры &НаСервереБезКонтекста Процедура ДергаемСерверБезКонтекстаНаСервере() // Вставить содержимое обработчика. КонецПроцедуры |
|||
8
mingw
12.04.16
✎
12:42
|
(5) Лучше просто не знать как работает garbage collector. Особенно когда много физической памяти. Легче жить будет.
|
|||
9
Impuls20_03
12.04.16
✎
12:50
|
(7) Попробовал. Так не течет. А если вызывать 20000 раз из одной процедуры то течет:
для п=1 по 20000 цикл ТестВызоваСервернойПроцедурыНаСервере(); КонецЦикла; |
|||
10
Fragster
гуру
12.04.16
✎
12:57
|
(9) каждый раз при нажатии на кнопку, или один раз утекает и фиксируется?
|
|||
11
Impuls20_03
12.04.16
✎
13:28
|
(10) В том то и дело что каждый раз при нажатии. После отработки процедуры память тоже не сбрасывается. А после повторного вызова память начинает прибавляться к уже накопленной.
|
|||
12
mingw
12.04.16
✎
13:32
|
(11) Поиграйся в тестах с разными режимами запуска 1С (Толстый/Тонкий) и обязательно запускать режим Предприятия не через отладку из Конфигуратора.
|
|||
13
Broadbread
12.04.16
✎
13:34
|
(0) Yes it can
|
|||
14
Impuls20_03
12.04.16
✎
13:55
|
(12) Да. Действительно. В толстом клиенте с памятью все ОК.
|
|||
15
mingw
12.04.16
✎
14:03
|
(14) Зато некоторые конфы в толстом глючат. К примеру Розница 2.2 при запуске в толстом открытие элементов справочников из реквизитов документов по "Открыть (Ctrl+Shift+F4)"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |