Gateway Memory Usage

So I’ve been tracking this for about a week, and I can’t seem to find anything “wrong”. Thought I would get some more eyes on it, perhaps it’s nothing, perhaps there is something I’m missing.

This is a Standalone Gateway, there are no other heavy software packages (DB, Designer, etc.). Just Ignition and Antivirus. This is a remote gateway which is only used as a remote provider, there are 2 projects, the global scripting project and a default project which is only used for tag editing and gateway events.

There are just over 20K tags on this gateway.

Server is a VM
Windows Server 2016 Standard
16GB RAM
8GB Reserved for Ignition
Ignition Version 8.1.7

Was upgraded from 7.9 if that matters for any reason, though I doubt that it will.

We are seeing some pause the world events, but they are not constant nor consistent so far as I can tell. This doesn’t seem to effect the client which runs from a remote gateway. I am curious if this seems like normal usage and I should just consider increasing the RAM for the server, or if there is an issue and I just haven’t found it yet.

thread_dump.txt (221.7 KB)

Try both reducing and increasing the ram allotted to Ignition. Your “sawtooth” pattern is pretty shallow. That means it either is struggling to free up permanent allocations (not enough allocated) or is choking on lots of complex but idle stuff that accumulated because it could (too much allocated). A sawtooth that cycles between ~50% and ~80% is reasonable.

Also, make sure G1GC has an entry in ignition.conf for the target maximum pause time. I like to set it to 100ms. The java default was 1 second, last I checked.

1 Like

Also, how many cores does this machine have? (more is better…)

This machine currently has 4 cores.

There isn’t currently a G1GC entry for target maximum pause time. That would look something like this if I’m not mistaken

wrapper.java.additional.1 = -XX:MaxGCPauseMillis=100

I will have to wait until the weekend to mess around with the ram allocations and add in the pause time setting.

Make sure all of your wrapper.java.additional. entries have unique sequence numbers.