节点集群;只使用了一个进程

时间:2017-03-22 19:01:55

标签: node.js process node-cluster

我正在运行一个群集节点应用,有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);

}

如何让所有员工都工作?

1 个答案:

答案 0 :(得分:0)

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

如果你在里面进行一些计算会花费比处理请求所需的时间更多的时间,会发生什么?就目前而言,工人在接受请求和回答请求之间从不忙。