So our gateway is heavily overloaded. We were using a timeout of 60 seconds to each plc. I did a test and found out a 4 minute timeout fixed the issue. Now the problem is changing each of the thousands of devices with the new timeout. I didn't see a way in the scripting functions to accomplish this in mass. Anyone have an thoughts on a way to do this? Thx
If you can afford some downtime, you can change values in the IDB directly (it's just a SQLite database). Those values aren't safe to modify directly while the gateway is running, though.
Sounds like it would be just a restart in downtime, which is totally acceptable. What would I need to do.
- Have a fresh gateway backup, ideally from right before the downtime.
- Open the config.idb file in any SQLite editor; there are many free options available. You can also look at any gateway backup to see what you're looking for/test things out; it's called
db_backup.idbor something like that in a .gwbk.
- Find the device related settings table for whatever device type you care about (there's a core devices table, but it doesn't store driver-specific settings; they'll be joined in with a foreign key from a more specific table).
- Issue your query to update the device timeouts, and ensure the SQLite session in your editor-of-choice has been closed out.
- Relaunch the gateway. The IDB is the 'source of truth' for gateway config, so whatever's there is whatever will be applied when the gateway starts up.
I'm being somewhat vague because if you're not careful about this process, you can irrevocably delete important gateway config (a gateway backup will always be able to restore, which is why having an up to date backup is step 0).
I'm also not entirely convinced increasing these device timeouts will actually do anything to solve the root problem, but you asked about how to bulk edit timeouts, and this is the best way currently available. I would definitely encourage you to contact Support, both for your device timeout issue and if you have any more specific questions about the process I described above.
Thanks, I see that stuff now. Yeah, I know the root issue is the server has too many devices connected and other things overloading it. I had to rewrite our monitoring app because there were too many subscriptions for the opcua server to keep up with, I'm now going from the historian. Once I changed the timeout it seemed the opcua was able to grab data without thinking the device was disconnected and try a reconnection.
So I think it's in some sort of binary part of that file. Can I just change the data/db/config.idb, that has all the info in there?
Of course it is a binary part of that file. SQLite is a binary format. Use a SQLite program to run queries on that file outside of Ignition (with Ignition stopped).
I was, I did a select * from it and dumped it out. I think I got it working stopping the gateway, changing config.idb and starting the gateway again, after backups and such of course:).Thx