2017-04-10 113 views
0

我已经使用node-opcua包安装了监视多个nodeIds的情况。 它在一段时间内工作正常,但后来开始打印一些超时消息。node-opcua“交易超时”

这里是我服务的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

如果你有权访问服务器,你可以看看这个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);