CNode

cluster中的工作进程的轮询问题。

Mmrlong发布于13 年前最后回复13 年前7 回复4504 浏览0 收藏
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????

查看回复

回复 (5)

M
mrlong#1·13 年前

没有人回答,伤心.

S
sinsupakaka#2·13 年前
引用 mrlong没有人回答,伤心.

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

M
mrlong#4·13 年前
引用 bsspirithttp://blog.fens.me/nodejs core cluster/

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

S
sinsupakaka#5·13 年前
引用 mrlong没有人回答,伤心.

原来如此,学习了@fantasyni

参与回复
登录后即可参与回复。登录