我有一个大项目,想在多个文件上使用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”}
答案 0 :(得分:0)
正在发生的事情是,连接池的大小正在逐渐增加,以满足客户代码的需求。将连接选项中的minSize
设置为10,所有10个查询将立即具有可用的连接:
let opt = {poolSize:100, minSize:10};