2016-08-03 14 views
0

我正在嘗試爲用戶獲取Project權限並嘗試稍後設置權限。項目和用戶映射有89866個對象。在完成不超過300次後出錯。是否有限制多少查詢,你可以在一定的時間內在Node RestApi中執行

Error: 
{ 
     "code": "ECONNRESET", 
     "errno": "ECONNRESET", 
     "syscall": "read" 
} 

    return _.reduce(projectHash, function(promise, teamPermission, projectOID){ 
     return promise.then(function(){ 
      return rallyUtil.getProjectPermission('/user/' + userOID, '/project/' + projectOID).then(function(permission){ 
       if(!permission || (permission.Role != teamPermission && permission.Role != 'Admin')){ 
        //need to get user or else WSAPI server will throw a concurrency error 
        return rallyUtil.getUser('/user/' + userOID).then(function(){ 
         return rallyUtil.setProjectPermission('/user/' + userOID, '/project/' + projectOID, teamPermission); 
        }); 
       } 
      }); 
     }); 
    }, Promise.resolve()); 

回答

0

服務端一般沒有限制。看起來好像你可能在你的節點應用程序中提出的請求比完全必要的要多。我們已經看到了一些奇怪的行爲,將大量的承諾鏈接在一起。是否有可能減少您的應用程序的總體請求數量?

1

對您發送的請求數量或承諾沒有限制。然而,這種情況發生在兩種不同的情況:

可能的情況下,1

減少和承諾是對內存沉重。所以節點可能會耗盡內存,但我懷疑是這種情況。

可能殼體2

如果服務器過載它簡單地殺死連接作爲結果。因此你得到ECONNRESET。

沒有服務器可以在少於幾秒鐘內處理89866個請求,您需要每隔幾小時纔能有一個延遲或批量發送它們。

相關問題