07/30/2014
I'm utilizing the OPC UA bundle to set up an OPC UA server that supports both Data Access (DA) and Alarms & Events (AE). I'm reading 5,000 tags every second and exposing them through my OPC UA server sample. Additionally, I've created 5,000 alarms per second to stress-test the bundle. However, I noticed this configuration leads to memory leaks and significant delays in real-time updates and alarm generation.
After troubleshooting, I discovered that the method
public override void ReportEvent(ISystemContext context, IFilterTarget e)
takes over 5 seconds to complete. As a result, we experience delays in both real-time updates and alarm generation.
Are there any methods, configurations, or code refactoring approaches that could help resolve this delay?
05/30/2017
If you have a lot a huge number of alarms you would likely better off creating a custom node manager that takes advantage of having knowledge of your alarm system.
You may be able to rewrite ReportEvent to achieve the same effect.
Most high performance services don't use in memory nodes at all.
This example converts each element in a simple array into multiple nodes without creating the nodes in memory:
https://github.com/OPCFoundati.....moryBuffer
These examples may provide some hints on how to refactor your alarm server:
1 Guest(s)