Node.js,cluster,express,apache ab和mongodb

我是mongo的新手,并且使用Node.js(v0.4.12),cluster(Learnboost v0.7.7)和express(v2.5.9)设置了一些性能testing。 我正在尝试连接到mongo,并使用apache ab进行简单的性能testing。 我已经用MySql设置了它,它完美的工作,但是当我尝试用mongo做同样的testing时,我没有得到我期望的结果。

通过MySql,我发送了10,000个请求到node.js集群(8个核心),并且我得到了10,000行插入到数据库。 没有问题。 但是,当我用mongo做同样的事时,我只能得到4500-4900。 我试过mongoskin,mongo-lite,node-mongodb-native,都有完全相同的结果。

我想也许这是池的大小,所以我增加/减less了。 没有。 没有错误或例外。 我不知所措

任何帮助,将不胜感激。

谢谢。

testing代码如下:

app.js

var mongoLite = require('mongo-lite'); var express = require('express'); var count = 1; var config = { host : 'localhost', user : USER, pass : PASSWORD, port : '27017', db : 'test', options : 'poolSize=10' }; var configUrl = 'mongodb://' + config.user + ':' + config.pass + '@' + config.host + ':' + config.port + '/' + config.db; var mongo = mongoLite.connect(configUrl); var server = express.createServer(); server.get('/test/:id', function (req, res) { mongo.collection('test_' + req.params.id).insert({_id: count++}, function(err, doc){ if (err) throw err; }); res.end('inserted'); }); module.exports = server; 

server.js

 var cluster = require('cluster'); cluster('./app') .use(cluster.reload()) .use(cluster.logger('logs')) .use(cluster.stats()) .use(cluster.pidfiles('pids')) .use(cluster.cli()) .use(cluster.repl(8888)) .listen(81); 

我有这些问题与Apache AB。 我的结论是,它在节点上发送请求的速度要快于处理它们,因为如果这个请求根本就没有得到处理的话。

我写了自己的基准testing来做Java中的http连接