Version 8.1.39
I was working on a customer's server when I noticed that expression tags were taking 30-40 seconds to initialize or to update their values.
I tried creating memory and reference tags and those updated immediately.
All of these tags were on my own tag group which had the default settings of 1000ms and a new name to differentiate from "Default".
Remoting into the server showed the cpu was consistently around 40% and the memory allowed for Ignition is 12 of 32GB. Ignition is only using a max of 9GB.
I am curious to know how expression tags execute differently from other types. And I want to know if anyone has seen and/or remedied this behavior before.
Some other information:
- there are 2 other tag providers that have about 50k tags each
- otherwise there around 10k tags among 10 other providers
- this gateway has the MQTT transmission module
If it's still happening get a thread dump and post it here.
Sorry, use this one. This is while it was executing.
Ignition-JOPV9903_thread_dump20241206-144026.json (580.4 KB)
Same behaviour for me. Im am using Ignition 8.1.36
Is there a solution for that?
The most common cause is use of runScript()
in expression tags where the scripts aren't executing quickly (~10ms or less).
Like tag event scripts (on tags, not in projects), expression tags execute in a dedicated thread pool of size three. As soon as you have three slow expressions running, all other expressions (in the whole gateway) have to wait.
All of the constraints discussed on this forum for tag event scripts also apply to expression tags' runScript()
calls.
3 Likes
Thanks for the answer. I added a few more threads (described here).
We now have ~150k tags on that server, thus i think it makes sense to increase the number of threads. runScript()
is not that often used but there are a lot of expression tags.
Best Regards,
Gerald
1 Like
Yes, that's a lot of tags. If the increased thread pool doesn't help, you should open a support ticket and give IA a thread dump to examine.