View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003102 | Compliance Test Tool (CTT) Unified Architecture | 3 - Feature Request | public | 2015-06-29 10:46 | 2019-01-07 17:08 |
Reporter | Thomas Reuther | Assigned To | Alexander Allmendinger | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | assigned | Resolution | reopened | ||
Platform | PC Windows 7 64bit | OS | Windows | OS Version | 7 64bit |
Target Version | 1.04 | ||||
Summary | 0003102: CTT crashes due to out of memory when running subscriptions | ||||
Description | I run a user defined test script where one subscription monitores 200 items. Those items have a change interval of 10 ms (= hundred values per second). I receive 20,000 data notifications per publish. | ||||
Steps To Reproduce | Subscription parameters: | ||||
Additional Information | The test script works fine. But if it runs longer then the CTT crashes due to out of memory. See attached memory graph. CTT: 1.2.335.238 | ||||
Tags | No tags attached. | ||||
Attached Files | |||||
Files Affected | |||||
|
Hello Thomas, I cannot replicate the problem here. I am using a newer CTT that may in fact have the problem resolved already. I would like to send the new CTT to you. Please email me at compliance@opcfoundation.org. |
|
No feedback. |
|
This "bug" still exists in CTT 1.2.336.254 Example: 1 subscription, 1,250 monitored items, 250 ms sampling rate, 1,000 ms publishing interval, queue size = 5. It takes only a few minutes until the CTT's memory increaes up to 1.7 GB and crashes. If I use the Java toolkit (from OPC Foundation website) as a client the memory isn't increasing but I get a lot of subscription timeouts. |
|
This happens due to expected behavior of the CTT. The CTT is keeping for verification purposes all received DataChangeNotifications in memory. This allows test scripts to validate their content afterwards. Of course at some point in time it will reach a memory limitation of the system which will cause it to crash because it can't use any more memory. Because we need to keep that buffer available in the CTT we can't change that behavior and freeing old data. The limitation will be increased from time to time due to changes of the redistributables etc. In my environment the CTT can use up to 2 GB of Memory. Could you please point out the intend of this test case so we can think about a possible solution by changing the script but still doing the same verification? |
|
This test is intended as a performance test. How can I access all received DataChangeNotifications in memory as you mentioned? I have several sets of test configurations: number of monitored items and updates rates, to measure the performance capabilities of our server. E.g. expected rate is of ~80K data values per second. And I also want to check if the performance is constant over a period of 1h , 8h or 24h (load test). |
|
You can access them via the PublishHelper object. This Helper object has two elements for the DataChangeNotifications which are I hope this helps a bit. Unfortunately this will only make the CTT run a bit longer because the data then is only kept in the memory once. But I'm pretty sure it still won't run for 24h with this change. |
|
That's good news to me! So if I manually (by script) empty the list of ReceivedDataChanges, or remove my own variables, then it could be what I need!?! Sorry for my poor knowledge. I program user defined scripts with CTT for about 4 years now. All I know is what I understood from studying existing scripts. But from a lot of scripts and built-in objects I don't know their intention. |
|
I have fixed my performance tests, but the storage of values of monitored items is not the only issue. After each call of PublishHelper.Execute() I reset the value of ReceivedDataChanges to "[]" (empty array). Unfortunately the CTT is still crashing. So I did more investigation and I found 3 issues:
The first line I can accept. CTT needs to show the errors occured. The other two I haven't expected. That piece of code is used to analyze received data and give error if some data is missing. <code> The variable "c" is used to calculate the gaps. The underlying data simulation increases values from "0" to <expectedNumOfValues> by "1". If "c > 0" I know how many values are missing. |
|
I'm happy to hear that we already made some progress. I can see where the increase might comes from. The addError() function does print the error in the result window and therefore the necessary memory increases with each call of this function. Due to your test scenario I assume there are many addError calls in one test run. |
Date Modified | Username | Field | Change |
---|---|---|---|
2015-06-29 10:46 | Thomas Reuther | New Issue | |
2015-06-29 10:46 | Thomas Reuther | File Added: MemoryGraph.png | |
2015-11-06 17:28 |
|
Note Added: 0006435 | |
2015-11-06 17:28 |
|
Assigned To | => Nathan Pocock |
2015-11-06 17:28 |
|
Status | new => feedback |
2016-02-12 18:41 |
|
Note Added: 0006723 | |
2016-02-12 18:41 |
|
Status | feedback => resolved |
2016-02-12 18:41 |
|
Resolution | open => no change required |
2016-12-12 14:42 | Thomas Reuther | Note Added: 0007515 | |
2016-12-12 14:42 | Thomas Reuther | Status | resolved => feedback |
2016-12-12 14:42 | Thomas Reuther | Resolution | no change required => reopened |
2016-12-14 18:18 |
|
Assigned To | Nathan Pocock => Csaba Abram |
2016-12-14 18:18 |
|
Status | feedback => assigned |
2017-07-13 01:31 | Paul Hunkar | Assigned To | Csaba Abram => Paul Hunkar |
2017-07-13 01:31 | Paul Hunkar | Assigned To | Paul Hunkar => Csaba Abram |
2018-08-07 12:50 | Alexander Allmendinger | Note Added: 0009276 | |
2018-08-07 12:50 | Alexander Allmendinger | Assigned To | Csaba Abram => Alexander Allmendinger |
2018-08-07 12:50 | Alexander Allmendinger | Status | assigned => feedback |
2018-08-10 10:10 | Thomas Reuther | Note Added: 0009290 | |
2018-08-10 10:10 | Thomas Reuther | Status | feedback => assigned |
2018-08-10 10:13 | Thomas Reuther | Note Edited: 0009290 | |
2018-08-10 10:53 | Alexander Allmendinger | Note Added: 0009292 | |
2018-08-10 11:19 | Thomas Reuther | Note Added: 0009296 | |
2018-08-13 12:39 | Thomas Reuther | Note Added: 0009308 | |
2018-08-31 15:15 | Alexander Allmendinger | Note Added: 0009327 | |
2019-01-07 17:08 | Paul Hunkar | Category | Implementation Bug => Feature Request |
2019-01-07 17:08 | Paul Hunkar | Target Version | => 1.04 |
2019-01-28 14:14 | Paul Hunkar | Category | Feature Request => 3 - Feature Request |