我已经使用node-opcua包设置了对几个nodeIds的监控。它在一段时间内工作得很好,但随后开始打印一些超时消息。
下面是我的服务的journalctl输出:
Apr 07 08:02:02 test-machine myservice[559]: Timeout .... waiting for response for ReadRequest { /*RequestHeader*/
Apr 07 08:02:02 test-machine myservice[559]: authenticationToken /* NodeId */: ns=0;i=50
Apr 07 08:02:02 test-machine myservice[559]: timeStamp /* UtcTime */: 2017-04-07T15:01:02.501Z
Apr 07 08:02:02 test-machine myservice[559]: requestHandle /* IntegerId */: 334 0x14e
Apr 07 08:02:02 test-machine myservice[559]: returnDiagnostics /* UInt32 */: 0 0x0
Apr 07 08:02:02 test-machine myservice[559]: auditEntryId /* UAString */:
Apr 07 08:02:02 test-machine myservice[559]: timeoutHint /* UInt32 */: 0 0x0
Apr 07 08:02:02 test-machine myservice[559]: additionalHeader /* ExtensionObject */: null
Apr 07 08:02:02 test-machine myservice[559]: };
Apr 07 08:02:02 test-machine myservice[559]: warning : Transaction has timed out
Apr 07 08:02:15 test-machine myservice[559]: Timeout .... waiting for response for ReadRequest { /*RequestHeader*/
Apr 07 08:02:15 test-machine myservice[559]: authenticationToken /* NodeId */: ns=0;i=50
Apr 07 08:02:15 test-machine myservice[559]: timeStamp /* UtcTime */: 2017-04-07T15:01:15.835Z
Apr 07 08:02:15 test-machine myservice[559]: requestHandle /* IntegerId */: 335 0x14f
Apr 07 08:02:15 test-machine myservice[559]: returnDiagnostics /* UInt32 */: 0 0x0
Apr 07 08:02:15 test-machine myservice[559]: auditEntryId /* UAString */:
Apr 07 08:02:15 test-machine myservice[559]: timeoutHint /* UInt32 */: 0 0x0
Apr 07 08:02:15 test-machine myservice[559]: additionalHeader /* ExtensionObject */: null
Apr 07 08:02:15 test-machine myservice[559]: };
Apr 07 08:02:15 test-machine myservice[559]: warning : Transaction has timed out
Apr 07 08:02:29 test-machine myservice[559]: Timeout .... waiting for response for ReadRequest { /*RequestHeader*/
Apr 07 08:02:29 test-machine myservice[559]: authenticationToken /* NodeId */: ns=0;i=50
Apr 07 08:02:29 test-machine myservice[559]: timeStamp /* UtcTime */: 2017-04-07T15:01:29.169Z
Apr 07 08:02:29 test-machine myservice[559]: requestHandle /* IntegerId */: 336 0x150
Apr 07 08:02:29 test-machine myservice[559]: returnDiagnostics /* UInt32 */: 0 0x0
Apr 07 08:02:29 test-machine myservice[559]: auditEntryId /* UAString */:
Apr 07 08:02:29 test-machine myservice[559]: timeoutHint /* UInt32 */: 0 0x0
Apr 07 08:02:29 test-machine myservice[559]: additionalHeader /* ExtensionObject */: null
Apr 07 08:02:29 test-machine myservice[559]: };
Apr 07 08:02:29 test-machine myservice[559]: warning : Transaction has timed out
Apr 07 08:03:01 test-machine myservice[559]: Timeout .... waiting for response for OpenSecureChannelRequest { /*RequestHeader*/
Apr 07 08:03:01 test-machine myservice[559]: authenticationToken /* NodeId */: ns=0;i=0
Apr 07 08:03:01 test-machine myservice[559]: timeStamp /* UtcTime */: 2017-04-07T15:02:01.928Z
Apr 07 08:03:01 test-machine myservice[559]: requestHandle /* IntegerId */: 337 0x151
Apr 07 08:03:01 test-machine myservice[559]: returnDiagnostics /* UInt32 */: 0 0x0
Apr 07 08:03:01 test-machine myservice[559]: auditEntryId /* UAString */: null
Apr 07 08:03:01 test-machine myservice[559]: timeoutHint /* UInt32 */: 0 0x0
Apr 07 08:03:01 test-machine myservice[559]: additionalHeader /* ExtensionObject */: null
Apr 07 08:03:01 test-machine myservice[559]: };
Apr 07 08:03:01 test-machine myservice[559]: Warning: securityToken hasn't been renewed基本上,我希望永远保持监控,并每15分钟发布一次。所以,如果有人也能帮助我设置参数,那就太好了。
发布于 2017-04-12 14:33:23
如果你有访问服务器的权限,你可以看看这个post。
在帖子中,他们指出,当您设置客户端时,应至少将requestedLifetimeCount * requestedPublishingInterval设置为PublishRequest.RequestHeader.timeoutHint
var options = {
requestedPublishingInterval: 1000, // check on server
requestedMaxKeepAliveCount: 2,
requestedLifetimeCount: 100, // check on server
maxNotificationsPerPublish: 10,
publishingEnabled: true,
priority: 10,
}
var subscription = new opcua.ClientSubscription(opcSession, options);
https://stackoverflow.com/questions/43324654
复制相似问题