【问题标题】:Node.js, cluster, express, apache ab and mongodbNode.js、cluster、express、apache ab 和 mongodb
【发布时间】:2012-06-08 14:00:59
【问题描述】:

我是 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 个请求,我将 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; 

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);

【问题讨论】:

  • 您应该尝试使用安全插入。将插入行更改为mongo.collection('test_' + req.params.id).insert({_id: count++}, {safe:true}, function(err, doc){ ... }

标签: node.js mongodb express performance-testing


【解决方案1】:

我在使用 apache ab 时遇到过这些问题。我的结论是它在节点上发出请求的速度比它处理它们的速度要快,因为如果这样的话,某些请求根本就没有得到处理。

我编写了自己的基准测试来在 Java 中进行 http 连接作为一种解决方法

【讨论】:

  • 很高兴知道!但是,我想知道为什么它适用于 MySQL 而不是 mongo?
  • 我的猜测是问题与 Mongo 的速度有关。任何一个请求都被彻底拒绝,因为连接太多而中断
猜你喜欢
  • 2014-03-20
  • 2014-01-24
  • 2013-08-20
  • 1970-01-01
  • 2014-07-30
  • 2021-08-27
  • 2020-05-14
  • 2017-01-21
  • 2019-11-25
相关资源
最近更新 更多