关于cluster fork多线程任务的疑问
发布于 11 年前 作者 miskolee 7066 次浏览 最后一次编辑是 8 年前

我的代码原型是这样的: if(cluster.isMaster){ for(var i=0;i<numCPUs;i++){ cluster.fork(); }

}else{ // fs.appendFile(‘node_build.log’,cluster.worker.id+’ ',function(err){}); logic();

}

在 logic当中创建了一个socket.io服务器。 我现在使用http以及websocket 循环大量连接。 log日志得到的结果基本上都是id为4的worker。在系统监视器中,该进程cpu消耗达到30%。 其他进程无动静。求解?

6 回复

在 cluster 并非真正的”负载均衡“ … 测试 socket.io 时~ 同时打开多个浏览器(例如 3) .ctrl+c 同时干掉, 再进去可能会达到你想测试的效果… 也不是100%

我现在基本放弃了多进程的打算。而是开多端口的方式。这样就是传统的负载均衡了

开多端口模式,你统一入口怎么转发到多个端口上去啊。用额外的工具还是自己写转发啊。@miskolee

@miskolee 一种是对CPU的考验,一种是对网络IO的考验

果断使用多端口+nginx

回到顶部