This is topic Накопились вопросы in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/000407.html

Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Добрый день!
Собственно сабж
1. Утечка памяти при работе RTM. Прекращается после отключения SIAD или обмена с ОРС серверами. Отдельно запись в SIAD кучи генераторов работает без проблем, с отключеным SIAD узел тоже работает нормально без утечек.
Попытки освободить память через перезагрузку узла (@load) результата не дают. В принципе, при остановке и загрузке в RTM другого проэкта, память также не освобождается, чистится память только закрытием RTM.
Подскажите как боротся.

2. При старте узла связь с ОРС серверами происходит через раз, отработка @e_OPC на старте проблему решает, но интересно с чем может быть связано.

3. Нет обмена между узлами при работе из разных IP подсетей при использовании связи аргумент-канал. При наличии хотябы одной связи канал-канал между узлами связь устанавливается (для узлов Console связь канал-канал отсутствует [Неодобрение / Frown] ), но частично - передаются значения каналов, а границы нет.
Как боротся?

4. Массовое (около 200 элементов) использование ресурсных графических элементов с управляющими аргументами (без аргументов все нормально) СИЛЬНО (15-20 минут)затормозило открытие шаблона экрана, пришлось отказатся от их использования.

5. Ерунда с копированиеми элементов между шаблонами экранов. Если исходные элементы были привязаны к аргументами, вставленные элементы привязываются непонятно к чему. Проэкт нормально сохраняется для RTM, но при попытке запуска узла можно получить от длительной паузы при старте до вылета с неустранимой ошибкой.

6. Автопостроение каналов от аргументов экрана/программы, вызванное из вкладки "показать аргументы" _редактирования_ канала, создает каналы не в узле, а в "базе каналов" ("уровень сложности"/"настраиваемый" включить "база каналов")

Артем Полторак,
Юго-Западная Электроэнерго Система
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Нарастание памяти происходит постоянно в течении длительного времени или потом оно останавливается? Скорее всего это связано с заполнением определенных буферов обмена с архивом или OPC интерфейсом.

2. Стоит у Вас ключ RUN? Если да, то ошибки возможны. Это будет исправлено в ближайшем релизе. Если нет, то надо анализировать на конкретных проектах.

3. Довольна странная ситуация. Разницы между связями канал-аргумент и канал-канал быть не должно. Мы это уточним.

4. Использование ресурсных ГЭ довольно ресурсоемкое дело. Поэтому такая ситуация неудивительна.

5. Если Вы копируете ГЭ с привязкой, то подразумевается, что Вы его перепривяжете к другим аргументам на другом экране. В этом случае ошибок быть не должно.

6. Это ошибка, будем ее исправлять.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
1. Рост не останавливается [Неодобрение / Frown] Даже более того, происходит ускоренее поглощения ресурсов. За 2 суток на нехватку памяти начал жаловаться сервер с 4 гигами ОЗУ [Неодобрение / Frown] К исходу вторых суток прирост памяти приложения был 20-40к в секунду.

Есть ли возможность контролировать размер буферов обмена (отладочная информация в RTM отображает только общее использование памяти - fm,vm) и переинициализировать их?

Артем Полторак,
Юго-Западная Электроэнерго Система
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
очень интересный сигнал про рост памяти. у нас в проекте тоже наблюдались утечки связанные с неотключенным архивом (и это при том что в архив не записывался ни один канал). проблема странная, все никак не собирусь на объект что бы еще раз пронаблюдать ситуацию и досконально разобраться в вопросе вместе со службой поддержки.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
а ОРС используется или нет? Проблема похоже в связке ОРС-SIAD, по отдельности все работает нормально. Найти бы еще для эксперимента исполнительные модули версии 6.02. Есть большое подозрение, что баг затесался после добавления поддержки HDA и связаной с этим обработки меток времени.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
У вас сейчас версия 6.02?
Текущий релиз 6.05.1!
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Читаем внимательно, ищется старый релиз для проверки ситуации. Исполнительные модули у меня 6.05.1.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Изменения в текущем релизе по сравнению с релизом 6.02 довольно существенны, поэтому выводы могут быть не верны. Если можете, пришлите Ваш проект для анализа на адрес hotline3@adastra.ru
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Вот эти существенные изменения и хочется проверить. Библиотека обмена по ОРС довольно сильно менялась при переходе с 6.02 на 6.03.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
OPC-связей у нас в проекте не было. завтра договорился пройти на объект. разрешу архив и буду наблюдать до понедельника. развязка близка... )
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Брехня [Улыбка / Smile] Ну увидишь рост памяти, а как выяснить причины? Отдельно посмотреть какой буфер растет нельзя. Сильно смущает тот факт, что остановка RTM и загрузка в него другого файла проэкта (допустим совсем пустого) никак не сказывается на освобождении памяти. Толи буфера при этом не сбрасываются (хотя логично было бы переинициализировать их при загрузке файла проэкта), толи идет утечка памяти (новые объекты объявляем и теряем на них указатели) и только система почистит память при закрытии приложения.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
новости с объекта: память на проекте со включенным архивом утекает со скоростью 17,4 мб/сут. за 3 дня утекло 54 мб. письмо с проектом и журналом доступной памяти отправляю в поддержку.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
И все же еще интересует не сам факт так называемой "утечки памяти", а "утекает" ли она до конца, или потом перестает.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
если нанести точки из лога памяти на график то образуется замечательная прямая
- в начале четкая линия вниз
- потом небольшой подскок (как будто система выделила ЕЩЕ память)
- затем продолжается четкая линия вниз с тем же наклоном
- потом небольшой провал вниз (по высоте прилизительно равный подскоку)
- и снова четкая линия вниз (период этик подскоков/спадов около 10-12 часов).
обращаю ваше внимание что память постоянно убывает и на нее накладывается еще какая-то активность образующая все ниже и ниже падающую "пилу". у меня бооольшие сомнения что когда-нибудь система освободит эту утекшую память, но ради эксперимента я дождусь когда объем выделенной rtcx памяти достигнет любой указанной вами отметки вплоть до значения краха порядка 800 мб (что по моему превышает всякие разумные пределы учитывая что на самом деле никакие каналы у нас не архивируются и с отключенным архивом память rtcx остается постоянной на уровне 56 мб)
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Интересно, то что по логу большие потери памяти происходят утром. При этом из проекта не понятно почему.

Нет новой информации? Продолжается ли рост занимаемой памяти?
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
новости есть. утечки странным образом прекратились сразу же после копирования лога. являлось ли это совпадением или имело место какое-то влияние неизвестно. сегодня перезапустил проект для того что бы воспроизвести ситуацию.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
в настройках узла ’Отчет тревог/Дамп/Параметры’
имя файла ОТ как написано? Со звездой перед именем или без?

>>Если указано только имя файла, он создается в текущей директории ОС. Если имени предшествует знак "*", файл создается в папке узла.<<

Вот с записью дампа в текущую директорию у меня были проблеммы, и как раз в виде утекания памяти. Хотя дамп писался и читался нормально.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
звездочек нет, дамп не пишу.
вдруг закралось подозрение что "утечкой" является очередь записи кэша для архива.. но если так, то почему очередь заполняется если ни один из параметров не архивируется? непонятно. не стану спешить с выводами и буду ждать воспроизведется ли ситуация.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
У дампа и ОТ одинаковый формат имени. Если пишется ОТ то возможны похожие проблеммы.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
А, кстати, у имени архивов тоже такой формат записи. Звезду Суворову!!! [Улыбка / Smile]
В смысле, имени архива или указывать полный путь
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
ситуация воспроизвелась - утечка остановилась. т. о. наш проект при включенном архивировании по непонятным причинам в течение трех дней выделяет память (от чего объем занимаемой rtcx памяти увеличивается с 56 до 106 МБ), а затем выделение памяти останавливается. что будет при работе проекта в дальнейшем - неизвестно. на объекте я загрузил предыдущую версию с отключенными архивами. интересно для чего проекту эта дополнительная память [Улыбка / Smile] ?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Тестировали Ваш проект в течении двух дней с влюченным архивом и без источников приемников. В итоге память как была в начале 54 Мб, так и осталась 54 Мб.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
но я не лгу! хм, а что значит "без источников приемников"? может в них гвоздь?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Значит, что узел не получает данных. Сейчас запустим Ваш проект в нагруженном режиме(генераторы вместо связей с контроллерами). При этом сделаем одно изменение: поставим размер ОТ равный 2000 строк. Проверим в течении 2 дней с архивом и 2 дня без архива
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
будем ждать результатов.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Проверили. И с включенным архивы, и с выключенными память на протижении всего тестирования составляла 54 МБ
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
ужос. пришлите какой-нибудь шпионский отладочный софт что бы самостоятельно пронаблюдать рост памяти на здешней машине.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Правой кнопкой мыши на "Мой компьютер", далее управление.
В открывшемся окошке выбираете "Журналы и оповещения...", далее "Журналы счетчиков". Здесь можно выбрать любой параметр по любому процессу для отслеживания и записи в лог.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
что именно мне выбрать что бы помочь вам разобраться какой именно участок трейсмода поглощает память? общую картину я вам уже дал, строить еще один график утечки памяти наверное смысла нету.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Интересует количество памяти занимаемой именно процессом rtcc.exe. Желательно при этом выставить ОТ не более 1000.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
[Улыбка / Smile] ...интересно что вы посоветуете когда я пришлю вам ровно такую же кривую, ведь сама по себе она никакой информативности не несет кроме очевидного факта выделения памяти... [Улыбка / Smile]
но надо играть по правилам, будет вам копия системного журнала, готовтесь >:-)
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Вообщем, хронически нехватает средств внутренней диагностики используемой буферами и объектами памяти [Неодобрение / Frown]
2Гусев Александр Петрович: В проэкте есть контроль границ каналов? А словари на все такие каналы подключены? Попробуй временно поотключать контроль границ или назначить пустые словари.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
контроль границ есть, словари подключены ко всем каналам. смысл отключать и назначать пустые словари? никогда проблем с этим не было. кроме того - если всего лишь перевести режим работы архива в FALSE доп. память не выделяется. не вижу как могут быть связаны словари с архивом. это же не архив сигнализации, а архив значений.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Вот и я думаю как они связаны [Улыбка / Smile] Однако влияет. У меня границы каналов динамические, берутся из своих каналов в источниках. Рост памяти прекращался при отключении архива. Удалял каналы в копии проэкта, смотрел после каких изменений процесс остановится. Остановился после удаления каналов CALL которые назначали границы. Вернул каналы CALL и назначил пустые словари каналам, уже вторые сутки память стабильная.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
2AdAstra Technical Support
Добрый день! Что-то по работе узлов из разных подсетей прояснилось? Половил тут пакеты в сети, узлы между собой что UDP пакетами общаются?
[prey / молящийся] (Ошпарил ноги) Проблема решется с помощью LanGame. Ну вы блин даете, а нормальное TCP соединение устанавливать между узлами можно?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Специалист по-этому вопросу сейчас в отпуске. Как только он вернется, мы проясним этот вопрос.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
запустил проект с включенным архивом и записью всех параметров процесса rtcx в системный журнал. жду накопления данных до пятницы или понедельника.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
проект отработал, память увеличилась и это нашло отражение в системном журнале, данные отправлены в службу поддержки
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
По UDP передаются только сообщения о статусе узлов. Остальной обмен происходит по протоколу IP.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Журнал получили и посмотрели. Факт роста занимаемой памяти есть. Хотель бы уточнить: без включения архива память на протяжении первых трех дней остается в районе 40 Мб?
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Да ну [Улыбка / Smile] Сетевой уровень он и есть IP, что для UDP, что для TCP. А поверх IP чего идет? UDP и идет, причем идет BROADCAST на FF.FF.FF.FF

ff ff ff ff ff ff 00 14 85 33 44 d7 08 00 45 00
05 c8 06 09 00 00 80 11 20 f9 0a 0d 04 17 ff ff
ff ff
02 04 01 04 05 b4 5e a5 02 00 00 00 ff 00
00 00 00 00 00 00 00 00 00 00 25 4d 5b 48 00 00
00 fe 00 00 00 00 02 21 00 00 00 00 00 00 00 00
. . .

Бог с тем UDP и возможностью потери пакетов, как вместо широковещательной рассылки заставить узлы лезть по конкретным адрессам? Потому как узел NLL, несмотря на содержимое addr.ind и настройки узлов проэкта, упорно шлет пакеты на FF.FF.FF.FF

З.Ы. Может вынести вопросы сетевого взаимодействия узлов в отдельную тему?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Широковещательные рассылки идут только для сообщений о присутствии узла в сети. Все остальная информация идет по конкретным адресам.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Это несовсем так [Неодобрение / Frown]
Слепил тестовый проэкт:
1.узел RTM с набором генераторов
2.узел Console с графическим экраном на аргументы которого привязаны генераторы 1-го узла
3.узел RTM с набором каналов привязаных к генераторам 1-го узла

адреса прописаны для всех узлов

Получаем на выходе:
Узел 1 RTM отсылает пакеты на FF.FF.FF.FF, при получении пакета от узла 3 RTM, начинается интенсивный обмен пакетами по адресу узла 3 RTM и переодически проходят пакеты на FF.FF.FF.FF

Узел 2 Console(NLL) упорно шлет пакеты на FF.FF.FF.FF

Узел 3 RTM отсылает два пакета на FF.FF.FF.FF, потом пакет на адрес 1-го узла и далее идет обмен пакетами между узлами и переодически проходят пакеты на FF.FF.FF.FF

Соответственно задача в том, чтоб заставить Узел 2 Console обратиться к узлу 1 RTM

З.Ы. Тестовый проэкт высылаю на forum@adastra.ru
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В настройках узла посмотрите с какой интенсивностью идут сообщения о присутсвии в сети. Пакеты по широковещательному адресу идут с той же интенсивностью?
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
9.879 с, можно сказать что да
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вот и ответ на Ваш вопрос :-)
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
На какой вопрос?

>>как вместо широковещательной рассылки заставить узлы лезть по конкретным адрессам?

И как? И где ответ? Консольные узлы упорно желают общатся широковещательно
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
По широковещательным адресам идут только сообщения о присутствии в сети и автопосылки. Весь остальной обмен идет по конкретным адресам. Консольный узел данные у Вас или не отправляет. Поэтому он шлет только сообщения о своем присутствии в сети.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Правильно, не отправляет, он должен их принимать и отображать. Узел 1 RTM с которого берутся данные отправлять их консоле не будет до тех пор пока не примет от нее пакет статуса, а он его не примет потому как широковещательный пакет от консоли маршрутизатором в соседнюю сеть (где расположен узел 1 RTM) не передается.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
И кстати, даже приняв пакет от консоли (перехват пакетов от консоли, подмена FF.FF.FF.FF на ардесс Узла 1 RTM, пересчет кс пакета, пересылка пакета), узел 1 RTM данные на адресс консоли передавать не начинает (хотя статус узла воспринимает нормально). А вот если я и на узле 1 RTM начинаю ловить широковещательные пакеты (которые вроде как только статус узла, а не передача данных [Улыбка / Smile] ) и пересылать их на консоль, данные на консоли появляются.

В дополнение [clever / умный] . После принудительной установки связи между узлами путем подмены IP адреса получателя, между узлами таки устанивливается нормальный обмен. То есть достаточно адресно перенаправить только первые пакеты от обоих узлов. И даже не от обоих, а только от узла 1 RTM к консоле.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Вот еще пара примеров сетевого взаимодействия:

Два компа подключены к одному хабу/свичу, IP подсети у них разные( маршрутизатора может и небыть как и пинга между узлами). НО пакет переданный на broadcast FF.FF.FF.FF
будет приниматься обеими узлами нормально, среда передачи то общая.
А вот в ситуации когда эти компы находятся в ФИЗИЧЕСКИ разных сетях, и обмен между ними идет через маршрутизаторы, пакет переданный на broadcast FF.FF.FF.FF дальше своей сети не уйдет.
Разьве что маршрутизаторы у нас будут очень продвинутыми и мы организуем на них отлов нужных нам пакетов (допустим фильтр по портам 516 и 260 и broadcast FF.FF.FF.FF) и их принудительную пересылку в нужные нам подсети. Вот только далеко не все маршрутизаторы это позволяют.
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
про рост памяти - да, при установке состояния архива в FALSE память остается на одном и том же уровне
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Связь между разными подсетями сейчас в Trace Mode сильно затруднена. Самый простой иметь внешние IP, иначе надо настраивать оборудование так, чтобы широковещательные посылки одной подсети принимались узлами другими подсетями.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
для Гусева Александра

Проверили в очередной раз. Проекты Ваши за исключением привязок (заменили их на генераторы). Память в обоих проектах росла примерно одинаково, в проекте с архивом чуть больше но не на 30 МБ. Мы это связываем с заполнением буферов. Даже если это 30 МБ, то это не критично.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
В случае с NLL узлом получается такая ситуация, пока узел не получит произвольный пакет (статус или информационный) в котором номер узла отправителя будет соответствовать узлу-источнику данных, обмен не начнется. При этом обмен начинается по адрессу узла отправителя такого пакета, а содержимое addr.ind игнорируется. Я так понимаю связано это с работой double-force, когда консоль сама выбирает активный узел для общения. Как вариант временного решения - генерация произвольного пакета состояния узла с помощью RAW сокетов (просто дурим консоль, подсовываем ей пакет якобы от нужного узла). Но очень хотелось бы увидель в следующих релизах ключик для принудительного запуска обмена NLL с конкретным адресом (можно из addr.ind)
 
Posted by Гусев Александр Петрович (Участник № / Member № 2148) on :
 
учитывая что рост памяти останавливается и катастрофы не происходит будем считать это трудновоспроизводимой особенностью проекта не оказывающей существенного влияния на работу системы [Улыбка / Smile]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
НЕ совсем понятно для какой цели Вам необходим принудительный запуск обмена между NLL и RTM.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
? Потому что непринудительный запуск просто неработает если узлы находятся в разных (физически) подсетях.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Работа в разных подсетях возможна и без принудительного запуска, если в узлах указаны ip-адреса.
 
Posted by Artem Poltorak (Участник № / Member № 2928) on :
 
Ну вот опять, на третий круг идем [Улыбка / Smile] См. выше узлами NLL содержимое addr.ind игнорируется, тестовый проэкт с этой фигней отправлял еще 25.06.2008 (forum@adastra.ru). Также (см. выше) это проявляется при "если узлы находятся в разных (физически) подсетях". Ключевое слово ФИЗИЧЕСКИ, т.е. _весь_ обмен идет через маршрутизатор. А если вы пробуете работу разных подсетей между устройствами подключенными к одному хабу то это все до одного места, потому как broadcast FF.FF.FF.FF будет восприниматься любым подключеным к этому хабу компом, вне зависимости от подсети.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2