为什么创建阻塞操作?

时间:2014-04-29 10:05:53

标签: node.js express mongoose blocking mean-stack

使用mean.io堆栈,我遇到以下问题:

在使用Apache bench进行测试时,我发现简单查询创建了阻塞操作

var mongoose = require('mongoose'),
        async = require('async'),
        Post = mongoose.model('Post');

exports.index = function(req, res) {
  Post.find({deleted:false}, function(err, posts) {
    if (err) {
      res.jsonp(err);
    } else {
      res.jsonp(posts);
    }
  });
};

ab -n 1 -c 1 http:// localhost:3000 / home> 测试时间:0.006秒

ab -n 10 -c 10 http:// localhost:3000 / home> 测试时间:0.032秒

ab -n 100 -c 100 http:// localhost:3000 / home> 测试时间:0.224秒

我是否正确使用回调,可能是什么问题?

1 个答案:

答案 0 :(得分:0)

MongoDB查询的并发性仅限于连接池的大小,默认情况下只有5个。

您可以在mongoose.connect来电中进行调整,然后将其设置为100,以消除此作为基准测试的瓶颈:

mongoose.connect('mongodb://localhost/test', {server: {poolSize: 100}}, cback);