Express默认使用群集吗?

时间:2014-05-28 08:54:17

标签: node.js express

我尝试在纯JMeternode.js上使用express server.运行基准

结果是:

node.js  = 600 RPS, express = 1200 RPS

在运行基准测试时,node.js服务器总是使用1个cpu,但快速服务器使用全部。

这是否意味着快递服务器默认使用群集?

更新:基准代码

的node.js

var http = require('http');

var Server = http.createServer(function(req, res){        
    res.write('I heard you !');
    res.end();    
}).listen(8000);

快递(3.8)

var express = require('express');

var app = express();

// ----------- middleware -------------
app.configure(function(){
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use('/public',express.static(__dirname+'/files'));
});

// ----------- route-------------
app.get('/', function(req, res){
    res.send('I heard you!')
});

app.listen(8000);

1 个答案:

答案 0 :(得分:-1)

Express.js不使用群集。

您看到更多核心而不是单个繁忙的原因很可能是因为node.js通过异步代码更快速地将操作卸载到其他工作人员。

您可以将群集与快递一起使用,但只要您没有缩放问题,这只是不必要的麻烦。

以下是示例代码(source)

// Include the cluster module
var cluster = require('cluster');

// Code to run if we're in the master process
if (cluster.isMaster) {

    // Count the machine's CPUs
    var cpuCount = require('os').cpus().length;

    // Create a worker for each CPU
    for (var i = 0; i < cpuCount; i += 1) {
        cluster.fork();
    }

// Code to run if we're in a worker process
} else {

    // Include Express
    var express = require('express');

    // Create a new Express application
    var app = express();

    // Add a basic route – index page
    app.get('/', function (req, res) {
        res.send('Hello World!');
    });

    // Bind to a port
    app.listen(3000);
    console.log('Application running!');

}