Кластер узлов не прослушивается, кластер выходит и не отвечает

Эта проблема у меня только на моей машине. Я попробовал свой код на других машинах, он работает отлично, у меня не было никакого решения, потому что нет проблем с уровнем кода, может быть проблема с ОС или может быть проблема с версией 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

и никакие данные не попадают в браузер, постоянно загружаются в браузер.

Пожалуйста помоги.


person Gaurav    schedule 27.03.2017    source источник
comment
порт 8080 открыт на вашем компьютере? Некоторые брандмауэры могут блокировать соединение через этот порт.   -  person Gaurav Gandhi    schedule 27.03.2017
comment
@ErrHunter Я запускаю его локально, и он отлично работает без кластера,   -  person Gaurav    schedule 27.03.2017
comment
Пробовали ли вы использовать PM2. Установите и попробуйте использовать его Cluster mode, если он работает с этим, у нас могут быть проблемы с нашей реализацией, если он не работает и там, это означает, что это какая-то другая проблема, в основном с ОС или сетью или чем-то еще.   -  person Gaurav Gandhi    schedule 27.03.2017


Ответы (1)


Во-первых, вы не указали маршрут, по которому ваш сервер может получить запрос.

В соответствии с вашим кодом вы можете определить один маршрут в своем состоянии else

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

И нажмите URLhttp://localhost:8080.

Надеюсь, что это работает

person abdulbarik    schedule 27.03.2017
comment
Согласен, скорее всего, 404 проглотили и убили рабочего. - person Paul; 27.03.2017
comment
Да, сервер все еще пытается ответить, но не может, так что, вероятно, он будет убит - person abdulbarik; 27.03.2017
comment
Нет, я имею в виду, что работник, принявший запрос, умер (см. вывод его консоли по этому поводу), я говорил, что это, вероятно, потому, что его приложение не обрабатывает исключение. Онлайн-оператор сервера после него указывает, что кластер после этого перезапустил рабочий процесс. - person Paul; 27.03.2017
comment
@abdulbarik после добавления той же проблемы - person Gaurav; 27.03.2017
comment
@Gaurav Можете ли вы обновить свой вопрос с помощью обновленного кода? так как я проверил то же самое на своем компьютере, и он работает - person abdulbarik; 27.03.2017
comment
Да, я уже говорил вам, что это рабочий код, но он не работает на моей машине. - person Gaurav; 27.03.2017
comment
Моя версия узла v6.9.2 - person abdulbarik; 27.03.2017