graphQL响应缓慢和重复响应

时间:2016-08-12 04:20:30

标签: mongodb meteor graphql apollo mantrajs

有没有人经历过使用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)服务器重复从头开始重新加载,这就是响应需要更长时间的原因。

这并不总是发生。它在服务器加载缓慢时发生。当服务器加载速度很快时。一切都顺利进行。

1 个答案:

答案 0 :(得分:1)

这里没有足够的信息来回答这个问题,但我的猜测是它与GraphQL无关。我认为你的客户只是取消了这个请求而另一个是因为第一个超时了。您可以通过在将请求传递给GraphQL之前将请求记录到服务器来查明是否发生这种情况。