Ignition OPC-UA Client randomly disconnects from Kepware server

Hello everyone,

I have an Ignition Edge version 8.1.36 running on a Linux edge computer which subscribes to over 7200 tags over OPC-UA. The Kepware project is configured with 2 channels, with one channel holding around 7000 tags under a single device, and other with around 300 tags under a single device. The Kepware project is not under my control as it is set up by the customer. I am planning to request customer to add additional channels or devices to distribute the tags as I suspect Kepware is being stretched. However, before I make this request, I wanted to confirm if there were anything that stands out from ignition logs, which would also give me a good reason for modifying Kepware configuration. I am yet to receive logs from Kepware.

Whenever we face data loss, If I catch the data loss early on, restarting ignition opc-ua client module seems to work. This will not work if I missed some random window. Usually, customer restarts the Kepware project and it often resolves the issue, not always, but most of the time.

My assumption is, Ignition misses a subscription or receives wrong set of data, requests a re-publish, which is rejected by Kepware as it might have flushed its queue by then, but ignition keeps requesting the same, eventually Kepware blocks the client. This disconnects the client, somehow the connection is re-stablished later, but ignition client is now prevented from creating a subscription for the tags. Restarting the ignition client before it gets blocked by Kepware discards the republish requests and establishes the connection, else restarting Kepware is the only way.

This post looks similar to what I am facing, but the discussion didn't proceed any further.

Below is the log from ignition edge. For reference, at 2026-06-24 06:41:36:057 we lost the data connection. The gateway-script-shared-timer-[Edge]-1 is basically a timed script that logs the status of OPC-UA connection every minute.

2026-06-24 06:36:51:133 gateway-script-shared-timer-[Edge]-1
CONNECTED
2026-06-24 06:37:51:134 gateway-script-shared-timer-[Edge]-1
CONNECTED
2026-06-24 06:38:51:134 gateway-script-shared-timer-[Edge]-1
CONNECTED
2026-06-24 06:39:51:134 gateway-script-shared-timer-[Edge]-1
CONNECTED
2026-06-24 06:40:51:133 gateway-script-shared-timer-[Edge]-1
CONNECTED
2026-06-24 06:41:36:057 opc-ua-executor-371
[id=2] expected sequence=66657, received sequence=66658. Calling Republish service...
2026-06-24 06:41:36:066 opc-ua-executor-366
Notification data lost on subscriptionId=2, calling ResendData...
2026-06-24 06:41:36:089 opc-ua-executor-370
ResendData for subscriptionId=2 failed: status=Bad_ServiceUnsupported, description=The server does not support the requested service.
2026-06-24 06:41:40:283 opc-ua-executor-366
[id=2] expected sequence=66663, received sequence=66664. Calling Republish service...
2026-06-24 06:41:40:289 opc-ua-executor-370
Notification data lost on subscriptionId=2, calling ResendData...
2026-06-24 06:41:40:302 opc-ua-executor-369
ResendData for subscriptionId=2 failed: status=Bad_ServiceUnsupported, description=The server does not support the requested service.

This repeats until I get:

2026-06-24 06:50:08:160 opc-ua-executor-372
Subscription watchdog timer elapsed, id=7
2026-06-24 06:50:51:133 gateway-script-shared-timer-[Edge]-1
CONNECTED
2026-06-24 06:51:51:134 gateway-script-shared-timer-[Edge]-1
CONNECTED
2026-06-24 06:52:08:955 opc-ua-executor-370
Subscription watchdog timer elapsed, id=10
2026-06-24 06:52:09:297 opc-ua-executor-372
Failed to create 7290 items on subscription 'tag-group-edge_default': connection closed
2026-06-24 06:52:10:734 opc-ua-executor-370
ResendData for subscriptionId=14 failed: status=Bad_ServiceUnsupported, description=The server does not support the requested service.
org.eclipse.milo.opcua.stack.core.UaServiceFaultException: status=Bad_ServiceUnsupported, description=The server does not support the requested service.
at org.eclipse.milo.opcua.stack.client.UaStackClient.lambda$deliverResponse$5(UaStackClient.java:337)
at org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$Task.run(ExecutionQueue.java:119)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
2026-06-24 06:52:17:591 opc-ua-executor-370
Failed to create 7290 items on subscription 'tag-group-edge_default': connection closed
2026-06-24 06:52:19:340 opc-ua-executor-370
ResendData for subscriptionId=14 failed: status=Bad_ServiceUnsupported, description=The server does not support the requested service.
org.eclipse.milo.opcua.stack.core.UaServiceFaultException: status=Bad_ServiceUnsupported, description=The server does not support the requested service.
at org.eclipse.milo.opcua.stack.client.UaStackClient.lambda$deliverResponse$5(UaStackClient.java:337)
at org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$InlineTask.run(ExecutionQueue.java:154)
at org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$Task.run(ExecutionQueue.java:136)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
2026-06-24 06:52:33:910 opc-ua-executor-374
Failed to create 7290 items on subscription 'tag-group-edge_default': connection closed

Any insights would be much appreciated. Thanks in advance

I may not be off any help, but how fast are your subscriptions to these tags and what is your network connection between Kepware and Ignition? Are they on the same network and subnet?

I doubt changing the number of devices will make a difference as that usually relates to the driver comms to the end device, not the OPC-UA connection.

Wireshark and real log export would help, but also if you can get Kepware upgraded that might also help. It's probably a relatively old version.

I though ignition OPC-UA client subscribed to changes, at Kepware end, the values would update every one second, so Ignition client would follow the same rate?

Yes

Yes, you are probably right, the only option that I can think of was to distribute the tags across channels, that should probably help Kepware.

Are there any properties that can be modified at the ignition client side so that it does not issue multiple requests in case there is a mismatch between the items requested and received from Kepware? Or limit this to say 10 attempts, and then discards the re-publish request.

Yep, 6.13

That depends on how Kepware is configured. You can configure it to use the client requested rate (default if I recall), or you can specify several other options like "no faster than x ms". If you're at default, it will be based on your tag groups in Ignition (even if not at default, the "no faster than" option will try to follow the client rate, but limit how fast it can request changes).