节点集群;只有一个进程被使用
Node cluster; only one process being used
我是 运行 一个集群节点应用程序,有 8 个工作进程。我在处理请求时给出输出,输出包括处理请求的进程的 ID:
app.get('/some-url', function(req, res) {
console.log('Request being handled by process #' + process.pid);
res.status(200).text('yayyy');
});
当我疯狂刷新 /some-url
时,我在输出中看到每次处理请求的进程都是相同的。
我使用 node load-test 来查询我的应用程序。同样,即使有 8 个工作人员可用,也只有其中一个处理每个请求。这显然是不可取的,因为我希望对 集群 应用程序进行负载测试,以查看所有进程协同工作的整体性能。
这是我初始化应用程序的方式:
var cluster = require('cluster');
if (cluster.isMaster) {
for (var i = 0; i < 8; i++) cluster.fork();
} else {
var app = require('express')();
// ... do all setup on `app`...
var server = require('http').createServer(app);
server.listen(8000);
}
如何让我所有的工人工作?
您的请求没有使用任何资源。我怀疑总是调用同一个工作人员,因为它只是在下一个工作人员进来之前完成处理请求。
如果您在内部进行一些计算所花费的时间超过处理请求所需的时间,会发生什么情况?就目前而言,工作人员从不忙于接受请求和回答请求。
我是 运行 一个集群节点应用程序,有 8 个工作进程。我在处理请求时给出输出,输出包括处理请求的进程的 ID:
app.get('/some-url', function(req, res) {
console.log('Request being handled by process #' + process.pid);
res.status(200).text('yayyy');
});
当我疯狂刷新 /some-url
时,我在输出中看到每次处理请求的进程都是相同的。
我使用 node load-test 来查询我的应用程序。同样,即使有 8 个工作人员可用,也只有其中一个处理每个请求。这显然是不可取的,因为我希望对 集群 应用程序进行负载测试,以查看所有进程协同工作的整体性能。
这是我初始化应用程序的方式:
var cluster = require('cluster');
if (cluster.isMaster) {
for (var i = 0; i < 8; i++) cluster.fork();
} else {
var app = require('express')();
// ... do all setup on `app`...
var server = require('http').createServer(app);
server.listen(8000);
}
如何让我所有的工人工作?
您的请求没有使用任何资源。我怀疑总是调用同一个工作人员,因为它只是在下一个工作人员进来之前完成处理请求。
如果您在内部进行一些计算所花费的时间超过处理请求所需的时间,会发生什么情况?就目前而言,工作人员从不忙于接受请求和回答请求。