node.js: исключение в главном процессе кластера: канал закрыт - PullRequest
0 голосов
/ 15 марта 2012

Мой кластер node.js может запустить 2 рабочих процесса и работает нормально.Вот псевдокод.Но если я открою диспетчер задач Windows, чтобы убить процесс node.js, я ожидал, что он будет перезапущен.но выдает ошибку ( Ошибка: канал закрыт ).

if (cluster.isMaster) {

  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('death', function(worker) {
    logger.fatal('worker ' + worker.pid + ' died. Restarting again ...');

    cluster.fork();


  });

} else {
  // Worker processes have a express server.
  .........
  .........
}

Ошибка:

[2012-03-15 09:46:20.906] [INFO] console - Total CPUs :  2
[2012-03-15 09:46:22.182] [INFO] console -    info  - 'socket.io started'
[2012-03-15 09:46:22.240] [INFO] console -    info  - 'socket.io started'
[2012-03-15 12:20:04.973] [FATAL] choicebeat - worker 6928 died. Restarting agai
n ...
[2012-03-15 12:20:05.213] [ERROR] console - Exception in cluster master process:
 channel closed
Error: channel closed
    at ChildProcess.send (child_process.js:118:33)
    at c:\HTML5\LIKEPREF\test\server\node_modules\socket.io-clusterhub\node_modu
les\clusterhub\lib\index.js:150:22
    at Array.forEach (native)
    at ChildProcess.onmessage (c:\HTML5\LIKEPREF\test\server\node_modules\socket
.io-clusterhub\node_modules\clusterhub\lib\index.js:149:15)
    at ChildProcess.emit (events.js:88:20)
    at Pipe.onread (child_process.js:102:16)

Похоже, что-то не так с socket.io-clusterhub.Это какая-то ошибка конфигурации или ошибка?

1 Ответ

0 голосов
/ 17 марта 2012

Эта проблема была решена в последней версии clusterhub 0.1.2 socket.io-clusterhub использует внутренний кластер, поэтому если вы обновите ваш socket.io-clusterhub, он должен работать.

Ref: https://github.com/fent/socket.io-clusterhub/issues/1#issuecomment-4538131

...