2014-04-29 77 views
0

使用mean.io棧,我有以下問題:爲什麼創建阻止操作?

在與Apache臺架測試,我發現,簡單的查詢創建阻塞操作

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〜1的http://本地主機:採取3000 /首頁> 時間的測試:0.006秒

AB -n 10 -c 10的http://本地主機:3000 /首頁> 時間採取測試:0.032秒

ab -n 100 -c 100 http:// localhost:3000/home> 測試所需時間:0.224秒

我是否使用回調權限,可能是什麼問題?

回答

0

您的MongoDB查詢的併發性僅限於連接池的大小,默認情況下只有5個連接池。

你可以調整,在您的通話mongoose.connect,你可以將其設置爲100,以消除爲您基準的瓶頸:

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

我將其設置爲100,並看到,在db.serverStatus() .connections改變了,但無論如何Apache的工作臺顯示相同的結果,所以看起來像不可能在一瞬間發送幾個查詢:( 測試 - 如果在一個方法中放置兩個查詢(第二不在第一個回調中)它看起來像查詢並行D b – vdserg