帮助限制MongoDB CPU使用率的最佳方法是什么?

时间:2018-03-22 16:57:11

标签: mongodb parse-server jelastic

我们将MongoDB与 Parse-server 一起用作后端,我们的应用程序以5请求/秒的速率查询和保存数据。

在我们的3-stack解决方案(Nginx,Node.js,MongoDB)中,MongoDB获得了最高的CPU命中率,可能是由于查询和保存操作,我们正在使用 Jelastic 所以我们所做的是为我们的服务器提供可用的CPU资源,但每次MongoDB CPU使用率都会保持不变。

我认为这可以归结为这样一个事实:我们在保存之前和保存后对重复记录进行脏检查并删除最后一条重复记录时,检查是否存在具有相同字段值的文档(仅保留最早的一个)在Node.js级别。

enter image description here

现在的问题是:

  1. 配置MongoDB副本集是否有助于降低CPU使用率?
  2. 在MongoDB级别可以做些什么来优化它以便能够处理上面描述的这样的过程/请求?
  3. 以下是代码:

    Parse.Cloud.beforeSave("ProcessedDocument", function(request, response) {
        var d = request.object;
        var documentId = d.get("documentId");
        var query = new Parse.Query("ProcessedDocument");
        query.equalTo("documentId", documentId);
        query.first({
            success: function(results) {
                //console.log('Results ' + results);
                if(results) {
                    if (!request.object.isNew()) {
                        response.success();
                    } else {
                        response.error({errorCode:400,errorMsg:"Document already exist"});
                    }
                } else {
                    response.success();
                }
            },
            error: function(error) {
                response.success();
            }
        });
    });
    Parse.Cloud.afterSave("ProcessedDocument", function(request) {
        var query = new Parse.Query("ProcessedDocument");
        query.equalTo("documentId", request.object.get("documentId"));
        query.ascending("createdAt");
        query.find({
            success:function(results) {
                if (results && results.length > 1) {
                    for(var i = (results.length - 1); i > 0 ; i--) {
                        results[i].destroy();
                    }
                }
                else {
                    // No duplicates
                }
            },
            error:function(error) {
            }
        });
    });
    

    以下是MongoDB Compass的性能快照:

    enter image description here

0 个答案:

没有答案