0

graphQL を使用して応答が遅くなった経験のある人はいますか?

これはリゾルバーの私のコードです:

getActiveCaseWithActiveProcess(){
    console.log ("getActiveCaseWithActiveProcess");

    var result = [];
    var activeElements = ActiveElements.find({
        type:"signal",
        $or:[
         {signalRef:"start-process"},
         {signalRef:"start-task"},
         {signalRef:"close-case"}
        ]
    },{limit:200}).fetch();

    for (var AE of activeElements){

      var checkAECount = ActiveElements.find({caseId:AE['caseId']}).count();
      if (checkAECount <= 3){
        console.log ('caseId: ' +  AE['caseId']);
        var checkExistInResult = result.filter(function (obj) {
            return obj.caseId === AE['caseId'];
        })[0];

        if (checkExistInResult == null){
          result.push({
            caseId: AE['caseId'],
            caseStart: AE['createdDate']
          });
        }
      }
    }
    console.log("loaded successfully");
    return result;
}

私は実際に私のコレクションから膨大なデータを持っています。約20000件のレコード。ただし、これをロードすると、応答が遅すぎて、自動的にリロードを繰り返す可能性があり、応答がさらに長くなります。

I20160812-04:07:25.968(0)? caseId: CASE-0000000284, 
I20160812-04:07:26.890(0)? caseId: CASE-0000000285
I20160812-04:07:28.200(0)? caseId: CASE-0000000285
I20160812-04:07:28.214(0)? getActiveCaseWithActiveProcess
I20160812-04:07:28.219(0)? caseId: CASE-0000000194
I20160812-04:07:29.261(0)? caseId: CASE-0000000197

上記の添付ファイルからわかるように、この時点 (20160812-04:07:28.214) では、サーバーは最初からロードを繰り返すため、応答に時間がかかります。

これは常に起こっているわけではありません。サーバーのロードが遅い場合に発生します。サーバーの読み込みが速い場合。すべてがスムーズに実行されます。

4

1 に答える 1

1

ここでその質問に答えるには十分な情報ではありませんが、GraphQL とは何の関係もないと思います。最初のリクエストがタイムアウトしたため、クライアントはリクエストをキャンセルして別のリクエストを作成したと思います。リクエストが GraphQL に渡される前にサーバーにログを記録することで、それが発生するかどうかを確認できます。

于 2016-08-12T04:46:20.943 に答える