【问题标题】:Node cluster not listening, cluster exits and not respond节点集群未监听,集群退出且无响应
【发布时间】:2017-08-19 23:17:01
【问题描述】:

这个问题只出现在我的机器上。我在其他机器上尝试了我的代码,它运行良好,我没有任何解决方案,因为没有代码级别的问题,可能是它的操作系统问题或者可能是 Nodejs 版本问题,我不知道。

操作系统:Window 7 Professional 64 位

Nodejs 版本:4.4.3

代码

var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
    // Fork workers.
    for (var i = 0; i < numCPUs; i++) {
        cluster.fork();
    }


    cluster.on('exit', function(worker, code, signal) {
        console.log("worker %s died", code);
        cluster.fork();
    });
} else {
    var express = require('express');
    var http = require('http');

    // init app
    var app = express();

    app.get('/',function(req,res){
        res.send('home page');
    });

    function createServer(app) {
        return http.createServer(app);
    }

    app.locals.server = createServer(app);

    app.locals.server.listen(8080, function() {
        console.info("server online");
    });
}

命令行登录

server online
server online
server online
server online

当我点击http://localhost:8080 时,新的日志是

worker 3221225477 died
server online

浏览器没有数据,一直在浏览器上加载。

请帮忙。

【问题讨论】:

  • 您的机器上的端口8080 是否打开?某些防火墙可能会阻止通过该端口的连接。
  • @ErrHunter 我在本地运行它,它在没有集群的情况下运行良好,
  • 您是否尝试过使用PM2。安装并尝试使用它的Cluster mode,如果它与它一起工作,那么我们的实现可能有问题,如果它在那里不起作用也意味着它有其他问题,主要是操作系统或网络或其他东西。

标签: node.js windows node-cluster


【解决方案1】:

首先,您没有定义任何路由,您的服务器可以在其中获取请求。

根据您的代码,您可以在 else 条件中定义一个路由

app.get('/',function(req,res){
        res.send('home page');
    })

然后点击 URLhttp://localhost:8080

希望有效果

【讨论】:

  • 同意,可能是 404 被吞并杀死工人。
  • 是的,服务器仍在尝试响应但无法响应,所以它可能会被杀死
  • 不,我的意思是接受请求的工作人员死了(请参阅他的控制台输出),我说这很可能是因为他的应用程序没有处理异常。后面的“server online”表示集群后来重启了worker。
  • @abdulbarik 添加后同样的问题
  • @Gaurav 你能用更新的代码更新你的问题吗?因为我在我的电脑上检查了同样的东西,它正在工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 2013-04-24
  • 2022-06-30
  • 1970-01-01
相关资源
最近更新 更多