【发布时间】:2014-07-30 23:35:48
【问题描述】:
我正在尝试使用集群模块与 Express 一起处理多个 http 请求。
使用下面的代码,我可以生成多个工作人员并让他们都在同一个端口上进行监听。大型 for 循环用于模拟 Web 服务器上的繁重负载。
我希望看到的是,如果一个工作人员在第二个请求进来时正忙于处理一个 http 请求,那么另一个工作人员将被调用并处理第二个请求。相反,当我尝试使用 curl 发出多个请求时,所有请求都由一个工作人员按顺序处理;没有其他工作人员被调用,即使他们已经被分叉了。
会不会是我使用 Express 不正确?提前致谢!
var cluster = require('cluster');
if (cluster.isMaster) {
var cpuCount = require('os').cpus().length;
for (var i = 0; i < cpuCount; i += 1) {
cluster.fork();
}
}
else {
var http = require('http'),
app = require('express')();
http.createServer(app).listen(31415, function () {
console.log(process.pid + " listening on 31415");
});
app.get('/', function (req, res) {
var t= 0;
for(var i=0; i < 100000000; i++){
t++;
}
res.send('done');
});
}
【问题讨论】:
标签: node.js http express concurrency cluster-computing