2

私はmongoを初めて使用し、Node.js(v0.4.12)、クラスター(Learnboost v0.7.7)、およびexpress(v2.5.9)を使用していくつかのパフォーマンステストをセットアップしました。mongo に接続して、apache ab で簡単なパフォーマンス テストを実行しようとしています。これを MySql でセットアップしましたが、問題なく動作しますが、mongo で同じテストを実行しようとすると、期待する結果が得られません。

MySql を使用して、node.js クラスター (8 コア) に 10,000 のリクエストを送信し、db に 10,000 行を挿入します。問題ない。しかし、mongo で同じことをすると、4,500 ~ 4,900 程度しか得られません。私はmongoskin、mongo-lite、node-mongodb-nativeを試しましたが、すべてまったく同じ結果になりました。

おそらくプールサイズだと思ったので、それを増減しました。何もない。エラーや例外はありません。私は途方に暮れています...

どんな助けでも大歓迎です。

ありがとう。

テストのコードは次のとおりです。

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; 

サーバー.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);
4

1 に答える 1

0

私はApache abでこれらの問題を抱えていました。私の結論は、ノードでリクエストを処理できるよりも速く発行していたということでした。これは、この特定のリクエストがまったく処理されていなかったためです。

回避策として Java で http 接続を行う独自のベンチマーク テストを作成しました。

于 2012-06-08T16:47:14.720 に答える