Page 1 of 1

Event-manager memory leak

Posted: Wed Aug 21, 2019 6:08 pm
by vadim
We need to acknowledge alerts from script with additional information in _add_value_7 and _add_value_8. We use function alertSetWait for this (ACK_bug.ctl). It was noticed that in this case there is a memory leak on the event manager.
I attached project for demonstration.

1. Run the ACK_bug.ctl script in the console. This script acknowledges alerts with the addition of add_value_7 and add_value_8.
2. Memorize value of memory that uses by event manager.
3. Run the panel GenerateAlarm.pnl, click on "START".
4. Wait until the number of generated alarms become 3000 (CAME Alarms == 3000), alarm generation will be disabled.
5. Look on value of memory that uses by event manager. Make sure that the memory of the event Manager has increased significantly (On my hardware > 350%)

I note that this project is small and uses a little memory. However, on real projects there is a memory leak of about 10Gb in 10 minutes.
WinCC OA 3.14 p28

Re: Event-manager memory leak

Posted: Thu Aug 22, 2019 9:17 am
by leoknipp
If the number of pending alerts is increased the memory usage of the Event Manager will also increase. The Event Manager stores the information for pending alerts during runtime in memory.
I do not see a memory leak in that case.

If you do a simulation, e.g. 200 came alerts - 200 gone alerts - - no pending alerts - 200 came alerts - 200 gone alerts - no pending alerts .... and the memory usage increases with every loop then you have possibly found a memory leak.
As long as you are only increasing the number of pending alerts, without any gone alert, the memory usage will increase.

Also please check the settings for the alert class you have used. If the option "Acknowledge old alarms" is set you have to acknowledge all alert instances and not only the last one for a specific dp element.
Using this options leads to high number of pending alerts if there is no acknowledgement done.

Best Regards
Leopold Knipp
Senior Support Specialist

Re: Event-manager memory leak

Posted: Fri Aug 23, 2019 4:22 pm
by zheleschikovav
1. Whe are changing 1 signal.
2. All alerts is gone! only 1 alert is active(Sql report show only one 1 alarm).
3. We don't use "Acknowledge old alarms"

The main topic is if we write "_add_value_7 and _add_value_8" and ack in one alertSet, we have leak. If we don't use _add_value it's, no leak.

Code: Select all

alertSetWait(
            (time)at,
            count, 
            dpSubStr(id + "._ack_state", DPSUB_SYS_DP_EL_CONF_DET) + "._add_value_7"
            "FullName"],

            (time)at,
            count,                                                           
            dpSubStr(id + "._ack_state", DPSUB_SYS_DP_EL_CONF_DET) + "._add_value_8"
            "PC name",
   
            (time)at,
            count,
            id + "._ack_state",
            ackType
   );

Re: Event-manager memory leak

Posted: Mon Aug 26, 2019 2:26 pm
by leoknipp
I have installed the project and checked the settings for the alert class AC0000.
At this alert class the option "Acknowledge old alerts" is active.
When starting the alarm simulation using the panel "GenerateAlarm" the number of alarms increases as it is correct according to the given configuration.

In your answer you have written that this option is not used.
Have you modified the configuration between your first post and now?

Best Regards
Leopold Knipp
Senior Support Specialist