Node.js Node js-委派请求前的群集延迟

Node.js Node js-委派请求前的群集延迟,node.js,cluster-computing,Node.js,Cluster Computing,我使用带有node.js的集群模块从多个cpu核(在我的例子中是4个)中获益。问题是,如果一个工作进程正忙,下一个请求将在大约10秒后委托给另一个可用的工作进程,这是不可接受的。我使用无限循环测试集群,如下所示: var cluster = require ('cluster'); if (cluster.isMaster) { var cpuCount = require('os').cpus().length; for (var i = 0; i < cpuCount

我使用带有node.js的集群模块从多个cpu核(在我的例子中是4个)中获益。问题是,如果一个工作进程正忙,下一个请求将在大约10秒后委托给另一个可用的工作进程,这是不可接受的。我使用无限循环测试集群,如下所示:

var cluster = require ('cluster');

if (cluster.isMaster) {
    var cpuCount = require('os').cpus().length;
    for (var i = 0; i < cpuCount-1; ++i) {
        cluster.fork();
    }  
} else {
    var express = require('express');
    var app = express();

    app.get('/', function (req, res) {
        console.log('Served by worker %d!', cluster.worker.id);
        while(true) {}
        console.log("done");
        res.status(200).send();
    });

    app.listen(8080, function () {
        console.log('Worker %d running!', cluster.worker.id);
    }); 
}

cluster.on('exit', function (worker) {
    console.log('Worker %d died :(', worker.id);
    cluster.fork();
});
var cluster=require('cluster');
if(cluster.isMaster){
var cpuCount=require('os').cpus().length;
对于(变量i=0;i

首先,我在浏览器中打开localhost:8080,并立即打印日志消息“由工作人员1提供服务”。然后,我在新选项卡中打开同一页,仅在10秒钟后,“由工作人员2提供服务”打印。这是为什么?我如何将请求立即委派给可用的工作人员?

哪个内核运行
负载平衡器
方法?可能由于无限循环,平衡器太忙,无法将请求发送到其他应用程序

事实上,
for..loop
是同步工作的,如果
负载平衡器
方法与
循环
在同一个应用程序和核心中,那么如果存在无限循环,负载平衡器就永远不会工作

我强烈建议使用来创建集群。经过多年开发的库提供的功能远远超出您的预期


祝你好运。

我猜集群依赖于主进程和子进程来相互通信。如果你用无限循环完全阻止子进程,那么通信实际上被阻止了。谢谢你的建议!但是,pm2是在AGPL下许可的。这会导致一些限制吗商业软件上的ons?我通常更喜欢MIT/BSD许可库。