2017-04-10 115 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);