[quote=“pturmel”]There’s no simple answer here. But there are several things you should check.
- Look in your Ignition server’s ignition.conf file at the memory settings. The maximum memory setting there must be less than your server VM’s allocated memory, minus the memory used by that server’s OS and other applications. If Ignition’s max memory plus all of the other memory used in your server is greater than the physical memory allocated to that VM, your system will almost certainly “thrash” with swap.
- Any designer or client run directly on the Ignition server counts as an “application”. I would absolutely forbid running any user applications on an Ignition server that is critical for production.
- Monitor your Ignition server’s Heap Memory Usage. Normal behavior is for memory consumption to slowly climb over a few to several minutes, approaching 90+ % of max, then drop due to garbage collection. And then begin ramping again. In my experience, the bottom of that drop should be less than 50%. If your server stays above 50% all of the time, give Ignition more memory, even if you must upgrade your hardware. If Ignition runs with a normal ramp and drop action, but the “bottom” after GC creeps up over time, you have a memory leak.[/quote]
1)
The server is assigned 8GB of ram and around 3.5-4GB is used currently (incl. java ~858MB)
[code]# Java Additional Parameters
wrapper.java.additional.1=-XX:+UseConcMarkSweepGC
wrapper.java.additional.2=-XX:+CMSClassUnloadingEnabled
wrapper.java.additional.3=-Ddata.dir=data
wrapper.java.additional.4=-Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false
#wrapper.java.additional.5=-Xdebug
#wrapper.java.additional.6=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
Initial Java Heap Size (in MB)
wrapper.java.initmemory=1024
Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=2048[/code]
2)
There is a possible chance that i have let the client running when i logged of. But if the client it self do a memory leak, should not the client do that the same out in the factory where it should run 24/7?
But after the restart of the server, the client is not started in the server, and should not cause memory usage.
3)
I tossed together an application to log the heap memory of the java.exe and store it into a CSV file, i am going to let it run for a couple days or so, and then analyze how the memory behaves for that process.
Another note; They operators claims that when the server is restarted, the client never re-connects, but as far as i understand it, the client should always try reconnect infinity, right?
According to description, they say they have to restart the gateway server, then the plcs, then the clients, so get it up and running, which sounds wierd to me.
The gateway is connected by opc to the siemens s7-1200 plc, and the connections are initiated from the gateway.
EDIT: Also, how do the gateway handle the scripts? when it has finished, will it be nulled/garbage collectable? Or do the script them self need to handle disposing created variables in the scripts?