I know that Colby is already familiar with our project to some degree. I would like breach the subject of how we can manage large tag projects more effectively within Ignition. This is somewhere between Design and Feature Request I suppose.
In the case of scanclasses/tags leased mode, is there a way to configure tags/scanclasses in Ignition such that the tags and the scanclasses are released from Ignition gateway memory upon the expiry of respective lease periods? We tried setting the lorate to zero and it did not release expired tags & scanclasses from memory even after multiple garbage collection cycles of the JVM.
In our usage scenario, there is a large set of tags and scanclasses in the external SQL database. However, at any point in time, only a small percentage of the tags & the scanclasses are leased when the Ignition HMI clients are open. When these HMI clients are closed, the lease on associated tags & scanclasses expires eventually. From our memory usage analysis, we find that lease expired tags/scanclasses are still held in memory of the Ignition server. In this usage, we would like to configure Ignition such that it releases tags/scanclasses from memory that are no longer used by any client (i.e. lease expired).
We currently allocate 10GB memory to Ignition Gateway to ensure that it doesn’t run out of memory for 1.4 MM tags. For the dataset of tags/scanclasses we actively use at any point of time, the memory need doesn’t exceed 500MB (we measured this by deleting all inactive tags/scanclasses from the external database).
So ideally if the tags associated with inactive scanclasses were released from memory (even several minutes after shutdown if needed) and then reactivated when GetTag or equivalent that tries to resolve the name into an object for evaluation then we can operate at a sort of steady state. Our tags and scanclasses in the database are likely to grow by many folds in the coming months so this is a critical use case for us.