0

我正在运行一个具有 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时,我在输出中看到每次都是同一个进程处理请求。

我使用节点负载测试来查询我的应用程序。同样,即使有 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);

}

我如何让我的所有员工工作?

4

1 回答 1

1

您的请求不使用任何资源。我怀疑总是调用同一个工人,因为它只是在下一个工人进来之前完成处理请求。

如果您在内部进行一些计算,所花费的时间超过了处理请求所需的时间,会发生什么?就目前而言,工作人员从不忙于接受请求和回答请求。

于 2017-03-22T19:50:09.023 回答