2016-08-03 11 views
0

ユーザーに対してProject権限を取得しようとしていて、後で権限を設定しようとしています。プロジェクトとユーザーマップには89866のオブジェクトがあります。 300を超えないでエラーが発生した後にエラーが発生します。ノード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

送信するリクエスト数や約束には制限はありません。しかし、この2つの異なる場合に起こります。

可能ケースを1

は削減し、約束はメモリ上に重いです。ノードのメモリが不足する可能性がありますが、これは誤りです。

可能ケース2

サーバーが過負荷になった場合、それは単に結果として接続を殺します。したがって、ECONNRESETを取得します。

サーバーは89866リクエストを数秒で処理することはできません。数回ごとに遅延が発生するか、バッチで送信する必要があります。

関連する問題