cluster中的工作进程的轮询问题。
发布于 1年前 作者 mrlong 688 次浏览
if(cluster.isMaster){
  for (var i = 0; i < numCPUs; i++) {
    var worker = cluster.fork();
    worker.on('online', function() {
      util.log('on line wid:' + worker.process.pid);
    });
  }
  util.log('cluster.isMaster');
} else if (cluster.isWorker) {

  var server = net.createServer(Option,function(socket){
    socket.name = socket.remoteAddress + ":" + socket.remotePort;
    clients.push(socket);
 ....

  server.listen(settings.port,settings.host);
  util.log('listen ' + settings.host + ':' + settings.port + ' pid:' + process.pid);
}
> node app.js 
cluster.isMaster
on line wid:5048
on line wid:5048
on line wid:5048
listen 192.168.1.104:1377 pid:6540
listen 192.168.1.104:1377 pid:1972
listen 192.168.1.104:1377 pid:3932
on line wid:5048
listen 192.168.1.104:1377 pid:5048

不管我客户端连接多大, 客户端连接之后,提示如下: 工作进程都是: listen 192.168.1.104:1377 pid:5048 为什么不轮询工作进程,老是5048???

7 回复

没有人回答,伤心.

你这个4个进程监听同一个端口,肯定会有3个失败的呀。不能重复监听同一个端口

@sinsupakaka
这个是可以的,share server ports 了 cluster

谢谢,原因是win7上 cluster 的负载均衡有bug 。

原来如此,学习了@fantasyni

回到顶部