查询慢/延迟空集合Nodejs MongoDB

时间:2018-11-07 14:26:39

标签: node.js mongodb

我有一个大项目,想在多个文件上使用mongodb连接。 对于仅包含1个文档的集合,查询会以1-5s随机进行。

以下是我得到相同延迟的示例:

const MongoClient = require("mongodb").MongoClient;
const ObjectID = require("mongodb").ObjectID;
const uri = "mongodb://localhost:27017/";
const opt = {poolSize:100};

let start = new Date().getTime();

let _db;

MongoClient.connect(uri,opt,(err, client)=>{
    console.log("connected");
    let db = client.db("easyLife");
    _db = db;
    console.log("time connect: "+(new Date().getTime() - start) + "s");
    for (let i = 0; i < 10; i++){
        start = new Date().getTime();
        let users = _db.collection("users");
        users.findOne({_id:new ObjectID("5bdedb0ed4f00a8140a50cf6")}, function(err, res){
            console.log("time: "+(new Date().getTime() - start) + "s");
        });
    }
});

在我的主项目中,我初始化MongoClient.connect回调中的所有事件,并获得50ms至5000ms的答案。

示例的输出是

connected
time connect: 1040s
time: 3s
time: 1009s
time: 1010s
time: 2013s
time: 2014s
time: 2016s
time: 3020s
time: 3021s
time: 3022s
time: 3022s

为什么会有这样的延误?我究竟做错了什么? 我搜索了2天,找不到解决方法。

{驱动程序:{名称:“ nodejs”,版本:“ 3.1.9”},操作系统:{类型:“ Windows_NT”,名称:“ win32”,体系结构:“ x64”,版本:“ 10.0.17134” },平台:“ Node.js v10.13.0,LE,mongodb-core:3.1.8”}

1 个答案:

答案 0 :(得分:0)

正在发生的事情是,连接池的大小正在逐渐增加,以满足客户代码的需求。将连接选项中的minSize设置为10,所有10个查询将立即具有可用的连接:

let opt = {poolSize:100, minSize:10};