Professional OPC
Development Tools

logos

Online Forums

Technical support is provided through Support Forums below. Anybody can view them; you need to Register/Login to our site (see links in upper right corner) in order to Post questions. You do not have to be a licensed user of our product.

Please read Rules for forum posts before reporting your issue or asking a question. OPC Labs team is actively monitoring the forums, and replies as soon as possible. Various technical information can also be found in our Knowledge Base. For your convenience, we have also assembled a Frequently Asked Questions page.

Do not use the Contact page for technical issues.

EasyUAClient Instances Set to Isolated are Not Behaving Independently

More
21 Sep 2023 11:22 #12203 by gkalipershad
Thank you for your explanation. I believe the customer said that even with 10 connections, they do not behave concurrently, but I will test the way you've suggested.

GK

Please Log in or Create an account to join the conversation.

More
21 Sep 2023 07:31 #12194 by support
Hello.

You wrote "If I am now understanding correctly, the Isolated property will force separate client connections, but they would still operate in a single thread and not concurrently. ".

I would still like to correct this a little, in two aspects:

1. The current design is such that they should already operate concurrently. But the concurrency may have its limits. That's why 2 or 5 or 10 may appear to work fine, but not 80. It might be possible to improve on that, but such behavior is not considered a problem. It would be a product improvement, not a bug fix.
2. If, however, also a small number (2 or 5) connection negatively influences themselves, it would be a more serious issue, possibly a bug.

So yes, please try to do the "small" test you proposed. If it shows a problem, I will investigate.
For larger test, not only I have not an imminent idea of how to do it, but neither do I have actual plans to do so, because it is not the design aim. We would have to discuss such things and plan upfront. During our meeting in spring, I have stated precisely that: That the product development is done while keeping performance in mind, but is not currently tested or optimized for that specifically. Intentionally.

Best regards

Please Log in or Create an account to join the conversation.

More
20 Sep 2023 15:19 #12184 by gkalipershad
Thank you for the corrections. If I am now understanding correctly, the Isolated property will force separate client connections, but they would still operate in a single thread and not concurrently. In that case, I suppose the question is - when one connection has a problem, how do we circumvent this and move onto the next connection rather than getting stuck on the bad connection? Is there something in the library that could help with this? Sounds like they may just need to make their application multithreaded with each client operating on independent threads. Is this possible?

I had wanted to replicate the Isolated "issue" by creating two separate client objects connecting to separate servers and then kill one of the servers to see if the other client continues or not. I am not sure I had any ideas in mind of how to replicate the performance issue with the 80 clients, but I could add a few and see how the thread count of the application is affected.

Thoughts?

Please Log in or Create an account to join the conversation.

More
20 Sep 2023 14:23 #12180 by support
Hello.

As you also noticed, the forum post you link to had to do with OPC "Classic". It has been fixed, but it is unrelated to OPC UA, which is what your customer is using.

Before addressing the issue, I want to correct the misconceptions in your text. They do not affect the answer, but I feel it necessary to explain.

1. The title is "EasyUAClient Instances Set to Isolated are Not Behaving Independently". But to be precise, that's not what Isolated is for. When set to True, it means that operations performed through such EasyUAClient objects will have connections (sessions) separated from other EasyUAClient objects. The connections are still maintained by the same, single "engine" object in the background. The EasyUAClient instances are not completely "independent" in this sense.

2. If the client is creating one EasyUAClient for each PLC (UA server) he is connecting to, in terms of the connections (sessions), the result will be the same as if they had only one EasyUAClient. But it gives them the possibility to e.g. call some operation on one of them on a thread, and in parallel on a second one from another thread an another operation.

We do not test with 80 or so servers here and specifically target performance with high loads. It would be possible to do performance tuning for that, but it would be a relatively large effort that we will need to plan and schedule. Out of my head, the reasons for the declining performance might be e.g.

a) some inefficient locking (serialization) in QuickOPC code
b) use of threads from a thread pool - which might get scarce with high number of servers.

How do you plan to replicate it?

Regards

Please Log in or Create an account to join the conversation.

More
19 Sep 2023 16:26 #12165 by gkalipershad
Hello,

I apologize that we never got back to you on this forum post: www.opclabs.com/forum/reading-writing-subscriptions-property...solated-property-inquiry/reply

Was this ever fixed? And in what version of QuickOpc was it implemented?

We have a new user that is reporting a similar experience, but he is on the latest version in Nuget and using OPC UA instead of DA. They have 80 isolated EasyUAClient objects in a single application all subscribed to 80 different Siemens PLCs with UA Servers. They are reporting 2 things:

1. Subscribing from more than 10 instances in parallel drastically decreases performance. Depending on the tag quantity and requested publish rate, I could see this being almost expected.
2. If any of the PLCs are offline or unreachable, it appears to block the other client instances. The expectation is that if these are all set to isolated, 1 client's operations should not affect the others.

Please let us know if you have ever seen this behavior and whether it is expected. I am currently working on replicating it and will ask the customer for a Wireshark.

Thanks,
GK

Please Log in or Create an account to join the conversation.

Moderators: support
Time to create page: 0.078 seconds