Node.js Express默认使用集群吗?
我尝试使用Node.js Express默认使用集群吗?,node.js,express,Node.js,Express,我尝试使用JMeter在纯node.js和express服务器上运行基准测试。 结果是: node.js = 600 RPS, express = 1200 RPS 在运行benchmark时,node.js服务器始终使用1个cpu,而express server使用所有cpu 这是否意味着express server默认使用群集 更新:基准代码 node.js var http = require('http'); var Server = http.createServer(funct
JMeter
在纯node.js
和express服务器上运行基准测试。
结果是:
node.js = 600 RPS, express = 1200 RPS
在运行benchmark时,node.js服务器始终使用1个cpu,而express server使用所有cpu
这是否意味着express server默认使用群集
更新:基准代码
node.js
var http = require('http');
var Server = http.createServer(function(req, res){
res.write('I heard you !');
res.end();
}).listen(8000);
快车(3.8)
Express.js不使用集群
与单个内核相比,您看到更多内核处于忙碌状态的原因很可能是由于node.js与express通过异步代码更有效地将操作卸载给其他工作人员
您可以将集群与express一起使用,但只要不存在扩展问题,这就是不必要的麻烦
下面是一个示例代码:
//包括集群模块
var cluster=require('cluster');
//在主进程中运行的代码
if(cluster.isMaster){
//计算机器的CPU数
var cpuCount=require('os').cpus().length;
//为每个CPU创建一个工作进程
对于(变量i=0;i
不,没有。你很可能在比较不同的东西。你能分享你在这两种情况下使用的代码吗?
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);
// 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!');
}