Кластеризация http sever quandry, когда сервер на основном и дочернем процессах - PullRequest
2 голосов
/ 21 марта 2012

Учитывая приведенный ниже код nodejs.Когда я запускаю тесты ab (apache benchmark) для localhost: 8080, я вижу только главный процесс, обслуживающий запросы.Однако, если я удаляю дескриптор сервера из главного процесса, я вижу, что разветвленные процессы включаются и выключаются.Есть ли для этого веская причина, о которой я не знаю?

var cluster = require('cluster');
var server = require('http').createServer(function(req,res){
   res.writeHead(200);
   var served = process.env.NODE_WORKER_ID || "master"; 
   console.log("hello world I was served by " + served);
   setTimeout(function () {
     res.end("hello world I was served by " + served);
   }, 1000);
});
if(cluster.isMaster){
  for(var i = 0; i < 2; i++){
     cluster.fork();
   }
 server.listen(8080);
}else{
  server.listen(8080);
}

1 Ответ

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

Поскольку NodeJS обрабатывает каждое требование в течение 1-5 мсек, и ваш запрос никогда не передается ни одному дочернему процессу, потому что основной процесс ничего не делает, просто спит.Если вы протестируете его на сотнях одновременных подключений, вы увидите выигрыш через кластеризацию.Здесь я сделал недавний тест.http://mustafaakin.wordpress.com/2012/03/19/nodejs-simple-clustering-benchmark/

Можно выполнить тестирование с помощью Apache Benchmark

...