УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

Вопрос по AMRDevs


Автор Сообщение
Сообщение создано: 09. 12. 2014 [10:34]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
У меня в исходящих транспортах плодятся транспорты связанные с ARMDevs
inAssr01k086_TT_1
inAssr01k086_TT_2
..
..
inAssr01k086_TT_10

как я понял это происходит из-за вкл/выкл модуля /sub_DAQ/mod_AMRDevs/cntr_r01k086_ASKU

так и должно быть? или это баг?
Сообщение создано: 09. 12. 2014 [10:46]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"monia" wrote:

...
как я понял это происходит из-за вкл/выкл модуля /sub_DAQ/mod_AMRDevs/cntr_r01k086_ASKU

так и должно быть? или это баг?

Читаем: http://wiki.oscada.org/Doc/AMRDevs#h1158-5

Learn, learn and learn better than work, work and work.
Сообщение создано: 10. 12. 2014 [11:55]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
То, что выходной транспорт генерируется автоматически, с этим проблем нет
Моя проблема в том, что старые(неиспользуемые) транспорты не подчищаются, а просто висят в выключенном состоянии.

И так получается, что при включение и выключение ARM контроллера транспорты просто плодятся
Сообщение создано: 10. 12. 2014 [12:15]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"monia" wrote:

И так получается, что при включение и выключение ARM контроллера транспорты просто плодятся

Получается, что читаем не внимательно!
Исходящие транспорты для подключений на входящий создаются если протокол у этих транспортов не указан.
Делаем выводы и задаёмся вопросом: Из каких соображений такие входящие транспорты созданы!

Learn, learn and learn better than work, work and work.
Сообщение создано: 17. 12. 2014 [07:45]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
"roman" wrote:

Исходящие транспорты для подключений на входящий создаются если протокол у этих транспортов не указан.
Делаем выводы и задаёмся вопросом: Из каких соображений такие входящие транспорты созданы!


С созданием новых транспортов все понятно, но почему не удаляются старые? если они вообще не используются. Или мне нужно их (не используемые транспорты) периодически удалять?

Если не сложно разъясни по подробней, что то я недопонимаю :(
Сообщение создано: 17. 12. 2014 [22:26]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"monia" wrote:

С созданием новых транспортов все понятно, но почему не удаляются старые? если они вообще не используются. Или мне нужно их (не используемые транспорты) периодически удалять?

Потому что он не знает и не может знать используются ли они и не закрыты-ли извне без реального их использования тем-же Kontar, который пробует слать инициирующий запрос, а затем и сам основной трафик. А если трафик не идёт то сокет останавливается, а затем и удаляется.
Почему они без активности только и переиспользуются, по индексам сокетов, а удаляются вместе со входным транспортом.

Learn, learn and learn better than work, work and work.
Сообщение создано: 23. 01. 2015 [07:51]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
Вопрос/проблема

Для входного транспорта r01k098_TT было разрешено 10 клиентов
Из-за плохой связи (GPRS) постоянно создаются новые подключения к данному транспорту и генерятся новые выходные транспорты.
Как я понял это нормально из слов

Потому что он не знает и не может знать используются ли они и не закрыты-ли извне без реального их использования тем-же Kontar, который пробует слать инициирующий запрос, а затем и сам основной трафик. А если трафик не идёт то сокет останавливается, а затем и удаляется.
Почему они без активности только и переиспользуются, по индексам сокетов, а удаляются вместе со входным транспортом.


Но проблема заключается в максимальном количестве клиентов = 10, после того как предел достигнут входной транспорт "затыкается", оно и понятно ведь достигнут предел
Вопрос, сколько выставить предел - 20, 30... или это не поможет и максимальное количество клиентов будет всегда переваливать за предел?
Сообщение создано: 23. 01. 2015 [12:02]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"monia" wrote:

Для входного транспорта r01k098_TT было разрешено 10 клиентов
Из-за плохой связи (GPRS) постоянно создаются новые подключения к данному транспорту и генерятся новые выходные транспорты.
Как я понял это нормально из слов

Да уже и описание дополнил: http://wiki.oscada.org/Doc/Soskets#h93-3

"monia" wrote:

Но проблема заключается в максимальном количестве клиентов = 10, после того как предел достигнут входной транспорт "затыкается", оно и понятно ведь достигнут предел
Вопрос, сколько выставить предел - 20, 30... или это не поможет и максимальное количество клиентов будет всегда переваливать за предел?

У Вас вообще, что эти ассоциированные транспорты проверяет на живость, отправкой запросов по ним?
Т.е. это объект контроллера Kontar из AMRDevs или нечто иное?
А лимит нужно ставить раза в два больше от максимального количества клиентов извне.

Learn, learn and learn better than work, work and work.
Сообщение создано: 23. 01. 2015 [12:37]
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
из man

Пустое значение выбора протокола переключает транспорт в режим создания ассоциированного исходящего транспорта для каждого подключения на данный входящий.
Режим ассоциированных исходящих транспортов для входящего предусматривает наличие некоей внешней для транспорта процедуры, выполняющей роль протокола, которая должна "обходить" все ассоциированные исходящие транспорты, и выполнять запросы на чтение или запись-чтение.


как сделать такую процедуру?


У Вас вообще, что эти ассоциированные транспорты проверяет на живость, отправкой запросов по ним?
Т.е. это объект контроллера Kontar из AMRDevs или нечто иное?


Просто в AMSDevs добавил новый модуль r01k098_ASKU и в нем добавил 2 контроллера MC18 и ME20 (все описания переменных взял из XML-ка)
И создал входящий транспорт r01k098_TT с неуказанным протоколом и адресом TCP::2558:0, Keep alive время ожидания = 60 сек

А как проверить ассоциативные транспорты на живность?


Кстати связь устаканилась и ассоциативные транспорты перестали плодиться :), все таки была виновата связь
Сообщение создано: 23. 01. 2015 [13:13]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"monia" wrote:

как сделать такую процедуру?

Объект контроллера AMRDevs.Kontar и есть такая процедура. Сказать об этом нужно было сразу!

А расти такие подключения в случае с AMRDevs.Kontar будут если количество объектов контроллеров меньше реально подключающихся, т.е. присутствующие объекты контроллера AMRDevs.Kontar все свои исходящие транспорты нашли и опрашивают их, не проверяя более другие подключения, а реальные контроллеры Kontar не представленные объектом контроллера подключаются, не дожидаются запроса к ним, отключаются, опять подключаются и так до лимита.

Такое-же будет если остановить хотя-бы один объект контроллера.

Вычистится этот список после переподключения объекта контролера как самого по себе, после потери рабочей связи, так и после ручного перезапуска (хотя тут он может просто опять найти своё подключение в начале и успокоиться).

Т.е. достаточно зарезервировать лимитов подключений на пару больше от реальных контроллеров и не обращать внимания на лишние.

P.S. Несколько исправил на предмет не проверки на выключенные транспорты, при достижении лимита. Т.е. теперь сначала проверка, а затем лимит.

Learn, learn and learn better than work, work and work.



5276