我尝试在纯JMeter
和node.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);
答案 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!');
}