Memory buffer full, what would be proper value to change Memory Buffer Size

My Ignition application got stuck , and when I try to login gateway setup page , page does not load properly.
So I have to restart my Ignition application server to resume the service.
And it resumes, I checked the log file and find [ memory buffer, buffer full.]

I am using the default value which is 250 in store & foward configuration.
I am considering to increase the value, but I am not sure what would be proper size to configure.

Can anyone give a guidance on this, thanks.

com.inductiveautomation.ignition.gateway.history.exceptions.DataOverflowException: Unable to add data to memory buffer, buffer full.

at com.inductiveautomation.ignition.gateway.history.stores.MemoryStore.insertInBuffer(MemoryStore.java:187)

at com.inductiveautomation.ignition.gateway.history.stores.MemoryStore.syncdStoreData(MemoryStore.java:85)

at com.inductiveautomation.ignition.gateway.history.stores.AbstractStore.storeData(AbstractStore.java:233)

at com.inductiveautomation.ignition.gateway.history.stores.MultiStageStore.syncdStoreData(MultiStageStore.java:144)

at com.inductiveautomation.ignition.gateway.history.stores.AbstractStore.storeData(AbstractStore.java:233)

at com.inductiveautomation.ignition.gateway.history.DefaultStoreAndForwardEngine.storeData(DefaultStoreAndForwardEngine.java:145)

at com.inductiveautomation.ignition.gateway.history.HistoryManagerImpl.storeHistory(HistoryManagerImpl.java:261)

at com.inductiveautomation.gateway.tags.history.actor.HistoryActorFactory$DelayedEvaluationContainer.process(HistoryActorFactory.java:948)

at com.inductiveautomation.gateway.tags.history.actor.HistoryActorFactory$DelayedEvaluationContainer.run(HistoryActorFactory.java:907)

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.base/java.util.concurrent.FutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.base/java.lang.Thread.run(Unknown Source)

The answer depends on why the buffer filled up.

If your database stopped working for a short time, and then resumed working, then your buffer size might need to be increased. (To support brief database outages.)

But the more common reason for a full buffer would be a database that simply isn't powerful enough for your workload, so it falls behind. In that case, you need to upgrade the database, or reduce the workload, or both.

The most common reason for database performance problems, that I've seen here on the forum, is trying to use the same server for the database and the Ignition gateway. If that's the case, the first "upgrade" would be to move the database to its own server.

Share more details about your situation to get more specific advice.

2 Likes