On our development server we’ve occasionally run into a situation where the Gateway memory usage climbs and does not get released. Restarting the Gateway usually clears this up and results in a significant reduction in memory usage. Otherwise, the memory can remain tied up for hours, or sometimes never gets released at all.
What I did to fix it
In the past, when I’ve run into similar issues, I was able to resolve them by restoring a smaller config.idb file from backup. That approach worked because the Gateway could initialize cleanly with a lighter database.
In this particular case, however, the available backups were actually larger than the current file, so restoring them didn’t help.
As a workaround, I renamed the existing db folder to db_old and restarted the Gateway. After doing this, the Gateway was able to start again. All Gateway configuration was lost, but importantly, all Designer project resources were preserved — which was the most critical aspect for us.
Error details
The following error appears in the wrapper.log when the Gateway fails to start:
INFO | jvm 1 | 2025/12/02 11:39:47 | E [IgnitionGateway ] [17:39:47]: Error during context startup. INFO | jvm 1 | 2025/12/02 11:39:47 | org.sqlite.SQLiteException: [SQLITE_FULL] Insertion failed because database is full (database or disk is full) INFO | jvm 1 | 2025/12/02 11:39:47 | at org.sqlite.core.DB.newSQLException(DB.java:1179) INFO | jvm 1 | 2025/12/02 11:39:47 | at org.sqlite.core.DB.newSQLException(DB.java:1190) INFO | jvm 1 | 2025/12/02 11:39:47 | at org.sqlite.core.DB.throwex(DB.java:1150) INFO | jvm 1 | 2025/12/02 11:39:47 | at org.sqlite.core.NativeDB._exec_utf8(Native Method) INFO | jvm 1 | 2025/12/02 11:39:47 | at org.sqlite.core.NativeDB._exec(NativeDB.java:93) INFO | jvm 1 | 2025/12/02 11:39:47 | at org.sqlite.jdbc3.JDBC3Statement.lambda$executeLargeUpdate$2(JDBC3Statement.java:128) INFO | jvm 1 | 2025/12/02 11:39:47 | at org.sqlite.jdbc3.JDBC3Statement.withConnectionTimeout(JDBC3Statement.java:454) INFO | jvm 1 | 2025/12/02 11:39:47 | at org.sqlite.jdbc3.JDBC3Statement.executeLargeUpdate(JDBC3Statement.java:115) INFO | jvm 1 | 2025/12/02 11:39:47 | at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102) INFO | jvm 1 | 2025/12/02 11:39:47 | at com.inductiveautomation.ignition.gateway.localdb.AbstractDBInterface.runUpdateQuery(AbstractDBInterface.java:222) INFO | jvm 1 | 2025/12/02 11:39:47 | at com.inductiveautomation.ignition.gateway.localdb.AbstractDBInterface.runUpdateQuery(AbstractDBInterface.java:236) INFO | jvm 1 | 2025/12/02 11:39:47 | at com.inductiveautomation.ignition.gateway.IgnitionGateway.startupInternal(IgnitionGateway.java:1238) INFO | jvm 1 | 2025/12/02 11:39:47 | at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.startup(RedundancyManagerImpl.java:301) INFO | jvm 1 | 2025/12/02 11:39:47 | at com.inductiveautomation.ignition.gateway.IgnitionGateway.initRedundancy(IgnitionGateway.java:759) INFO | jvm 1 | 2025/12/02 11:39:47 | at com.inductiveautomation.ignition.gateway.IgnitionGateway.lambda$initInternal$0(IgnitionGateway.java:693) INFO | jvm 1 | 2025/12/02 11:39:47 | at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:544) INFO | jvm 1 | 2025/12/02 11:39:47 | at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) INFO | jvm 1 | 2025/12/02 11:39:47 | at java.base/java.util.concurrent.FutureTask.run(Unknown Source) INFO | jvm 1 | 2025/12/02 11:39:47 | at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) INFO | jvm 1 | 2025/12/02 11:39:47 | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) INFO | jvm 1 | 2025/12/02 11:39:47 | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) INFO | jvm 1 | 2025/12/02 11:39:47 | at java.base/java.lang.Thread.run(Unknown Source) INFO | jvm 1 | 2025/12/02 11:39:47 | I [IgnitionGateway ] [17:39:47]: Ignition[state=STARTING] ContextState = FAULTED
My questions
-
Is there a better way to force Java / Ignition’s internal processes to release memory without requiring a full Gateway restart?
-
For this specific error, is there a reason why SQLite fails at around 2 GB of file size on restart? Below is a screenshot of the file size that consistently causes the Gateway to fault on startup.
edit: Additional information
- Version: 8.1.36 (b2024010211)
- Gateway memory: 40,960
- The gateway memory is at 39/40 GBs, a restart would drop it to 15/40 and it would settle around 20/40 GBs after a few minutes


