我使用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分钟发布一次。因此,如果有人能够帮助我完成这些参数,那将会非常棒。
答案 0 :(得分:0)
如果您有权访问服务器,可以查看此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);