- Posts: 4
- Thank you received: 1
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.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- Reading, Writing, Subscriptions, Property Access
- Subscribing to a large number of tags, in parallel
Subscribing to a large number of tags, in parallel
When there were multiple instances of my app running and subscribing at the same time, I had to subscribe in chunks.
Please Log in or Create an account to join the conversation.
DC wrote: That seems to work! Can you briefly explain what those settings are and why they resolved this issue?
@DC, If you don't mind sharing, when you were calling "SubscribeMultipleItems(tags)" were you sending the whole 30k list of tags in one shot or were you calling in smaller batches as recommended in this post ? Were there any other settings that you ended up having to tune, not already mentioned in this thread, to get this many tags subscribed reliably?
Thanks,
Tyler
Please Log in or Create an account to join the conversation.
The queue capacities need to be long enough - there can be "spikes" of requests or responses which will eventually be consumed by the other party, but require storage temporarily. Obviously, the more items you work with, the higher is the maximum capacity needed.
The queue are allocated dynamically (no memory consumed upfront, if the queue size is set to high number). But when the limit is reached, no further elements are added to the queue - they are simply lost. We used to have event log reporting of this occurrence in past versions, but due to some technical difficulties currently there is nothing to indicate that the queue capacity was reached - except for the fact that requests or responses will be missing, which will manifest in various ways - one of them can be that not all items get subscribed.
Best regards
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Can you please try to increase some settings (indicated below) to very high numbers, such as:
EasyDAClient.ClientParameters.LinkCallbackQueueSize = 500000;
EasyDAClient.ClientParameters.RequestQueueSize = 500000;
EasyDAClient.ClientParameters.ResponseQueueSize = 500000;
EasyDAClient.EngineParameters.TopicLruSize = 500000;
EasyDAClient.EngineParameters.DefaultEventQueueSize = 500000;
Best regards
Please Log in or Create an account to join the conversation.
I never receive notification for the missing ones, not even an error.
Yes, I have a way to check how many tags are on the server and how many tags are actually subscribed in the application.
Thank you
Please Log in or Create an account to join the conversation.
you are really stretching it. These are huge numbers.
Can you clarify what you mean by "... subscribe to less"?
- Is it that you never receive any notification for them - not even a one with some error?
- Is it that you have a way to check the number of subscribed items on the server side, and you do not see the number expected?
- Or something else?
Thank you
Best regards
Please Log in or Create an account to join the conversation.
I have a use case where an application needs to subscribe to 30K tags, and there may be several instances of that application running in parallel on the same machine.
The problem I am encountering is on initial subscription, some instances of the application successfully subscribe to all 30K tags, while other instances randomly subscribe to less.
The code I am using to subscribe is based on the docs:
client.ItemChanged += client_Main1_ItemChanged;
client.SubscribeMultipleItems(tags);
Thank you
Please Log in or Create an account to join the conversation.
- Forum
- Discussions
- QuickOPC-Classic in .NET
- Reading, Writing, Subscriptions, Property Access
- Subscribing to a large number of tags, in parallel