Nodejs MongoDB连接池如何工作?

在下面的代码中,mongoClient.connect调用(默认情况下)打开一个由5个连接组成的池。 由于Node是单线程的,所以任何时候只能处理一个调用(func1或者func2)(第二个调用等到第一个调用完成),所以只有五个连接中的一个被使用。

使用Nodejs集群,如果我们派生多个实例,每个实例打开它自己的连接池(每个实例有5个连接)。

问题是,MongoDB连接池如何在Node环境中工作。 我们如何testing这个来演示同时使用同一个池中的多个连接?

mongoClient.connect('mongodb://localhost', function(err, db){ app.get('/func1', function(req, res){ for (var i=0; i<100000; i++){ db.collection('test').insert({a:i}); } res.end(); }); app.get('/func2', function(req, res){ for (var i=0; i<100000; i++){ db.collection('test').insert({a:i}); } res.end(); }); }); 

insert是asynchronous的,所以/func1/func2处理程序都只是排队100000插入,然后返回。 连接池然后在后台运行,一次执行不超过5次的插入(池中的每个连接1个)。