Автор |
Повідомлення |
Повідомлення створено: 18. 03. 2014 [13:34]
|
rxs5
Дмитрий Лыков
In tech support
Автор теми
Зареєстрован(а) с: 06.11.2013
Повідомлення: 205
|
"roman" wrote:
"roman" wrote:
Сделаю эти идентификаторы ненулевыми.
Сделал!
Спасибо за новую сборку. Проверил на 2075, но не помогло. Данные клиент Genesis64 не показывает. В логе Genesis64 есть такая ошибка
UA: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Revised queue size = 0): Good
в Ico.Fwx.Ua.Client.UaClientSession.a(String A_0, Int32 A_1, StatusCode A_2, String A_3, List`1 A_4, List`1 A_5)
в Ico.Fwx.Ua.Client.UaClientSession.a(Int32 A_0, String A_1)
в Ico.Fwx.Ua.Client.UaClientSession.a(MonitoredItem A_0)
в Ico.Fwx.Ua.Client.UaClientSession.a(Subscription A_0, Boolean A_1)
в Ico.Fwx.Ua.Client.UaClientSession.n()
в Ico.Fwx.Ua.Client.UaClientSession.ad()
в Ico.Fwx.Ua.Client.UaClientSession.ae()
в Ico.Fwx.Ua.Client.UaClientSession.d(Object A_0)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart(Object obj)
Дамп Wireshark и лог Genesis64 во вложении.
Вкладений файл
|
Повідомлення створено: 18. 03. 2014 [20:36]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"rxs5" wrote:
Спасибо за новую сборку. Проверил на 2075, но не помогло. Данные клиент Genesis64 не показывает. В логе Genesis64 есть такая ошибка
[html]UA: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Revised queue size = 0): Good
Установил Revised queue size в диапазон [1...1000].
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 19. 03. 2014 [04:54]
|
rxs5
Дмитрий Лыков
In tech support
Автор теми
Зареєстрован(а) с: 06.11.2013
Повідомлення: 205
|
"roman" wrote:
Установил Revised queue size в диапазон [1...1000].
Проверил на 2076. Genesis64 данные отображает.
Спасибо.
Однако есть ошибки в логе Genesis64
SESSION TIMED OUT: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
и
SESSION FAILURE DETECTED: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
Чем они могли быть вызваны ?
Добавил во вложение дамп wireshark и лог Genesis64.
[Повідомлення редагувалось 2 раз(ів), останній раз 19.03.2014 в 04:57.]
Вкладений файл
|
Повідомлення створено: 19. 03. 2014 [21:22]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"rxs5" wrote:
"roman" wrote:
Установил Revised queue size в диапазон [1...1000].
Проверил на 2076. Genesis64 данные отображает.
OK
"rxs5" wrote:
Однако есть ошибки в логе Genesis64
SESSION TIMED OUT: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
и
SESSION FAILURE DETECTED: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
Этому объясенения в дампе я не вижу.
Зато по прежнему вижу много Retransmission пакетов.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 20. 03. 2014 [17:39]
|
rxs5
Дмитрий Лыков
In tech support
Автор теми
Зареєстрован(а) с: 06.11.2013
Повідомлення: 205
|
"roman" wrote:
Этому объясенения в дампе я не вижу.
Зато по прежнему вижу много Retransmission пакетов.
Тоже не увидел по дампу с чем связаны такие сообщения.
Из последнего: проверил чтение запись OPC UA OpenSCADA <----> Genesis64 - все работает. Но в логе Genesis64 встречаются сообщения типа warning уровня level="700"
Причем они не одиночные, как предыдущие ошибки, а повторяются.
1. UA: opc.tcp://192.168.195.97:4848/ - [None:None]
CreateSession(Session Timeout: Requested=0 Revised=60000): Good
2. PUBLISH/REPUBLISH ERROR BadSubscriptionIdInvalid 'BadSubscriptionIdInvalid'
3. Adjusting Timeouts
Вкладений файл
|
Повідомлення створено: 20. 03. 2014 [21:10]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"rxs5" wrote:
Причем они не одиночные, как предыдущие ошибки, а повторяются.
1. UA: opc.tcp://192.168.195.97:4848/ - [None:None]
CreateSession(Session Timeout: Requested=0 Revised=60000): Good
2. PUBLISH/REPUBLISH ERROR BadSubscriptionIdInvalid 'BadSubscriptionIdInvalid'
3. Adjusting Timeouts
Это как раз прямой результат плохой связи и множества Retransmission. Когда клиент не получает Publish ответов и информации о доступных для перезапроса последовательностей. Т.е. он перезапрашивает последовательности, которых уже нет в виду очистки на глубину KeepAlive подписки.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 21. 12. 2014 [14:12]
|
rxs5
Дмитрий Лыков
In tech support
Автор теми
Зареєстрован(а) с: 06.11.2013
Повідомлення: 205
|
Добрый день, Роман.
Наблюдаю при работе OPC UA сервер Openscada <-> OPC UA клиент Genesis64 постоянный рост числа подключенных клиентов.
Сделал простую проверку и записал дамп в wireshark (во вложении).
Проверка - установил макс. число клиентов 3, и записывал дамп в wireshark до момента, пока в openscada не появилось 2 закрытых по лимиту соединения (сверх тех открытых 3, что уже были выделены для теста). Весь процесс по времени занял около 30 секунд.
Количество доступных соединений, выделенных в Openscada не играет роли для Genesis 64 - ставил 75, и они тоже открываются все, спустя некоторое время. Увеличивать число открытых соединений это не решение, желательно понять причину такого поведения и устранить ее.
По дампу, мои поиски (сервер .21, клиент .175)
1-е соединение
24 - открытие сессии 1
79 - создание подписки
608 - запрос клиента удалить подписку
612 - запрос клиента закрытие сессии 1
2-е соединение
641 - открытие сессии
698 - создание подписки
1268 - запрос клиента на удаление подписки
1272 - запрос клиента на закрытие сессии 2
3-е соединение
1297 - открытие сессии 3
1350 - создание подписки
1661 - запрос клиента на удаление подписки
1666 - запрос клиента на закрытие сессии 3
Вижу следующее: клиент делает запрос на удаление подписки и закрытие сессии и не получает от сервера ответа и подтверждение. Поэтому сессия и подписки остаются среди открытых. А клиент, для получения данных, открывает новое соединение и новую подписку. И так по нарастающей, пока не будет выбран весь лимит на соединения.
Для примера OPC UA сервер Openscada <-> OPC UA клиент UAexpert
На запросы клиента на удаление подписки от сервера приходит ответ
UA Secure Conversation Message: DeleteSubscriptionsResponse
Также на запросы клиента на закрытие сессии от сервера приходит ответ
UA Secure Conversation Message: CloseSessionResponse
Хотелось бы получить рекомендации - почему при использовании клиента Genesis64 c OPC UA из Openscada сервер не удаляет подписки и не закрывает сессии, как это запрашивает клиент. И что с этим делать.
Вкладений файл
|
Повідомлення створено: 21. 12. 2014 [14:38]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"rxs5" wrote:
Хотелось бы получить рекомендации - почему при использовании клиента Genesis64 c OPC UA из Openscada сервер не удаляет подписки и не закрывает сессии, как это запрашивает клиент. И что с этим делать.
Хотелось-бы чтобы Вы начали записывать, раз забываете, оговоренное ранее или перечитывайте тему!
А именно, уже многократно оговаривалось:
- сервер закрывает подключения только по прямым командам закрытия от клиента;
- сервер сам никогда не закрывает подписки и сеансы, т.е. только по команде клиента; сеанс может быть удалён сервером только по таймауту отсутствия активности, который достаточно большой;
- закрытие сеанса или подписок никогда не приводит к закрытию подключения, который закрывается запросом "CloseSecureChannel";
- для случаев внезапного исчезновения клиента или "забывания" им про ранние подключения есть KeepAlive время, которое Вы категарически не ставили;
- у меня нет проблем с ростом подключений на UAExpert, что как минимум подтверждает корректность работы сервера.
"rxs5" wrote:
Для примера OPC UA сервер Openscada <-> OPC UA клиент UAexpert
На запросы клиента на удаление подписки от сервера приходит ответ
UA Secure Conversation Message: DeleteSubscriptionsResponse
Также на запросы клиента на закрытие сессии от сервера приходит ответ
UA Secure Conversation Message: CloseSessionResponse
У меня приходят.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 21. 12. 2014 [14:58]
|
rxs5
Дмитрий Лыков
In tech support
Автор теми
Зареєстрован(а) с: 06.11.2013
Повідомлення: 205
|
Роман, ведите себя цивилизованно и уважительно. Без криков со знаками !!! И давайте вместо выяснения кто умнее решать вопрос.
сервер закрывает подключения только по прямым командам закрытия от клиента;
Вы видели дамп? Я считал, что после того, как расписал по номерам пакетов что и когда происходит, вопроса о порядке взаимодействия не возникнет.
Клиент Genesis64 запрос на удаление подписки делает. Что отвечает сервер?
Клиент Genesis64 запрос на закрытие сессии делает. Что отвечает сервер?
- для случаев внезапного исчезновения клиента или "забывания" им про ранние подключения есть KeepAlive время, которое Вы категарически не ставили;
Каким образом KeepAlive поможет серверу отвечать на запросы клиента?
И в добавление к этому, насколько я помню, как раз Вы и советовали KeepAlive устанавливать в 0 здесь http://oscada.org/ua/forum/posts//indusoft_web_studio_i_opc_ua//2/
у меня нет проблем с ростом подключений на UAExpert, что как минимум подтверждает корректность работы сервера.
Это подтверждает, что openscada<->uaexpert имеют согласованный порядок общения, т.е. и клиент и сервер корректно обрабатывают сообщения.
Делать из этого вывод, что если с одним клиентом все работает, то виноваты все кроме сервера не продуктивно.
И еще раз. Последний. Это не претензия к Вам и не претензия к ПО. Я вижу некорректную ситуацию работы клиента и сервера, сообщаю о ней, чтобы обсудить варианты решения.
[Повідомлення редагувалось 1 раз(ів), останній раз 21.12.2014 в 14:59.]
|
Повідомлення створено: 21. 12. 2014 [15:04]
|
rxs5
Дмитрий Лыков
In tech support
Автор теми
Зареєстрован(а) с: 06.11.2013
Повідомлення: 205
|
У меня приходят. Так и я написал, что в случае UAexpert на запрос клиента сервер отвечает нормально и удаляет подписку, и закрывает сессию. В случае клиента Genesis64 запрос на сервер есть, ответа от сервера нет. В этом и суть предыдущего моего сообщения с примерами.
Если это некорректное поведение клиента, то не пойму в чем оно выражается. Клиент Genesis64 запросы от отключение делает, судя по дампу. Если можете указать в чем именно некорректность Genesis64 - сообщу разработчикам.
[Повідомлення редагувалось 1 раз(ів), останній раз 21.12.2014 в 15:06.]
|