# How do you increase performance for clients?

**URL:** <https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703>\
**Category:** Ignition\
**Created:** [August 4, 2022, 8:44pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703 "2022-08-04T20:44:33Z")\
**Posts on this page:** 18\
**Page:** 2

<div class="post-metadata">

**Author:** ![witman](https://avatars.discourse-cdn.com/v4/letter/w/d2c977/32.png) [@witman](https://forum.inductiveautomation.com/u/witman)\
**Post date:** [August 8, 2022, 9:31pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/21 "2022-08-08T21:31:59Z")

</div>

This somewhat works on a visionWindowOpened event:

```python
system.tag.setOverlaysEnabled(False)
def enableOverlays():
	system.tag.setOverlaysEnabled(True)
system.util.invokeLater(enableOverlays, 5000)

```

Issues:

1. It’s client-wide (unless it is gateway-wide–haven’t checked) so every time you open a window with this script it affects all windows (though that’s not visible if other windows aren’t showing overlays at the time).
2. If you swap windows quickly, you can get interesting effects, like a previously scheduled enableOverlays function invoked later running right after the visionWindowOpened event so overlays are displayed after all.

I’m sure #2 could be worked around, but overall I like a loading overlay better because disabling overlays means we display incorrect “as configured” data on the page without any indication it is incorrect before live data arrives.

EDIT: Counterpoint–we could probably make the as-configured appearance of each component/template look the way we’d like them to before live data arrives so they display our own version of uncertain, rather than incorrect state.

---

<div class="post-metadata">

**Author:** ![Dawid\_Fulczynski](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dawid_fulczynski/32/12308_2.png) [@Dawid\_Fulczynski](https://forum.inductiveautomation.com/u/Dawid_Fulczynski)\
**Post date:** [August 9, 2022, 6:13am UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/22 "2022-08-09T06:13:23Z")

</div>

Check how many tags you use for a window in gateway webpage - \> Status → Vision Clients (select client session). If you use udt or nested udt all tags from udt in templates all tags from udt are subscribed. If you have big udt it is better idea to use tag path as parameter to template, and then get value by indirect binding.

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [August 9, 2022, 11:05am UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/23 "2022-08-09T11:05:28Z")

</div>

> [@Dawid\_Fulczynski](#):
>
> is better idea to use tag path as parameter to template, and then get value by indirect binding

This is true, "big udt" or otherwise.

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 9, 2022, 1:43pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/24 "2022-08-09T13:43:59Z")

</div>

I use indirect addressing/binding for everything, with a few exceptions. I have as little as 24 subscribed tags for a screen, and it lags just the same as the screens with larger amounts of tags.

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 9, 2022, 2:17pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/25 "2022-08-09T14:17:39Z")

</div>

> [@witman](#):
>
> `if event.propertyName == 'componentRunning' and event.newValue:`

Can you explain what event you chose for this script @witman ?

---

<div class="post-metadata">

**Author:** ![bschroeder](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bschroeder/32/13260_2.png) [@bschroeder](https://forum.inductiveautomation.com/u/bschroeder)\
**Post date:** [August 9, 2022, 2:37pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/26 "2022-08-09T14:37:39Z")

</div>

How do you have your tag group configured for those tags?

What kind of PLC?

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 9, 2022, 4:31pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/27 "2022-08-09T16:31:59Z")

</div>

Tag group for the majority of the tags talked about is a default subscribed group @ 500 ms. I have lowered this to 300 ms with no change. PLC is a ControlLogix 5580.

---

<div class="post-metadata">

**Author:** ![witman](https://avatars.discourse-cdn.com/v4/letter/w/d2c977/32.png) [@witman](https://forum.inductiveautomation.com/u/witman)\
**Post date:** [August 9, 2022, 4:33pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/28 "2022-08-09T16:33:58Z")

</div>

@William_Rawson, the event hides overlay once bindings have been evaluated. You may need to add a bit of additional delay to it too.

> [@propertyChange Event Executes on Form Load](https://forum.inductiveautomation.com/t/propertychange-event-executes-on-form-load/22942/4):
>
> For an explanation: The ‘selectedStringValue’ is (probably) changing on your component more than once because there’s an initial set of the value as the component is created, then another as the last saved value in the designer is applied, and then a third when any binding(s) that affect the component are evaluated. The componentRunning flag is only set when all of those things have been completed.

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [August 9, 2022, 4:35pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/29 "2022-08-09T16:35:31Z")

</div>

I would very much doubt that lowering the rate would help your issue.

There are ways to get very fast tag updates (@pturmel’s Ethernet IP Module). The question is, do you really need that update rate? How quickly are the tag values changing?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [August 9, 2022, 4:37pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/30 "2022-08-09T16:37:16Z")

</div>

There’s a moderately significant edge case (accessing templates through scripting) affecting Vision performance that’s fixed in 8.1.19+; upgrading may _help_ with apparent performance regression from 7.9. It’s not a panacea, but it may help if you’re using lots of scripting.

---

<div class="post-metadata">

**Author:** ![witman](https://avatars.discourse-cdn.com/v4/letter/w/d2c977/32.png) [@witman](https://forum.inductiveautomation.com/u/witman)\
**Post date:** [August 9, 2022, 4:43pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/31 "2022-08-09T16:43:50Z")

</div>

A couple delays that may be relevant:

1. Delay to subscribe tags if they are leased and weren’t previously subscribed: if your tags aren’t in direct mode, you could try changing to direct mode.
2. Delay to deliver new values to client.

I’m doubtful the subscription rate affects these much, though it may reduce delay to get newly subscribed leased tag values related to first delay noted above (only applies if tags are leased):

---

<div class="post-metadata">

**Author:** ![WillMT10](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WillMT10](https://forum.inductiveautomation.com/u/WillMT10)\
**Post date:** [August 9, 2022, 4:52pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/32 "2022-08-09T16:52:12Z")

</div>

Do you get periodic quality overlays on your screens or only on initial screen load? Just wondering if your PLC connection may be Overloaded. First thing that came to mind with seeing a default scan rate of 300-500ms.

---

<div class="post-metadata">

**Author:** ![bschroeder](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bschroeder/32/13260_2.png) [@bschroeder](https://forum.inductiveautomation.com/u/bschroeder)\
**Post date:** [August 9, 2022, 5:31pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/33 "2022-08-09T17:31:05Z")

</div>

What does the overload look like for the PLC(s) involved in this?

As @WillMT10 has mentioned an overloaded PLC might be causing this.

What about your Gateway performance? Does it look normal?

Are any of the bindings using the tag() expression or are they 100% all just indirect?

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 9, 2022, 5:44pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/34 "2022-08-09T17:44:02Z")

</div>

Those are some of the first things I checked. @500 ms for the default subscribed tag base, the overload is sub 10%. When I bump the rate faster from 350-400 ms, the overload is sub 50%, so that’s not the issue. Out of all of the screens with lag, most have indirect tags, though some have a few expressions.

---

<div class="post-metadata">

**Author:** ![bschroeder](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bschroeder/32/13260_2.png) [@bschroeder](https://forum.inductiveautomation.com/u/bschroeder)\
**Post date:** [August 9, 2022, 5:57pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/35 "2022-08-09T17:57:12Z")

</div>

Well if it is sub 10% then your PLC is overloaded by that amount.

Are you using the tag() expression at all?  
Are there calls on the screens that use runScript?

Since this is a ControlLogix, are the tags you reading inside of AOIs or are they UDTs?

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 9, 2022, 6:03pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/36 "2022-08-09T18:03:28Z")

</div>

Last time I talked to someone on support at Ignition, they said running at sub 10% is perfectly fine / normal. I maybe have 1 or two tag expressions total. There are no calls on screens that run scripts. Most of the tags I am pulling from are within UDTs. I don’t recall any being from an AOI.

Another issue is using the template repeater. It lags very bad when generating the templates inside of it. All tags inside are indirectly addressed. I hope that’s not another “you shouldn’t use template repeaters”, because that’s just one more thing added to the list that are “functions” of ignition yet don’t work well enough to use.

Edit: BTW, thanks for all the feedback!

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [August 9, 2022, 6:06pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/37 "2022-08-09T18:06:43Z")

</div>

> [@William\_R](#):
>
> Another issue is using the template repeater.

I encountered the same issue.

I made a window with just one component pointing to one tag and it still blinked red.

The surprising thing to me is why some people notice this issue while others don't.

---

<div class="post-metadata">

**Author:** ![William\_R](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/william_r/32/32710_2.png) [@William\_R](https://forum.inductiveautomation.com/u/William_R)\
**Post date:** [August 9, 2022, 6:10pm UTC](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703/38 "2022-08-09T18:10:42Z")

</div>

Right?! I feel like this is a major issue but its not getting the attention it deserves. I just keep reading “you shouldn’t use that” for different functions in ignition because they don’t work well. It seems like there’s only one specific way to do things, using one specific method, and if you don’t do it that way it you won’t be successful. Kind of a bummer TBH.

[Previous page](https://forum.inductiveautomation.com/t/how-do-you-increase-performance-for-clients/62703.md?page=1)
