问题描述: 在使用child_process fork子进程时,如果master以debug模式启动时,nodeJS模式使用master的启动参数启动子进程(包含debug参数),导致子进程debug端口启动失败。 解决办法: 在fork子进程时,获取master的debug参数,然后通过参数设置child_process调试参数信息,代码参考:
function startWorker(handle){
var debug = isDebug();
for(var i=0; i<WORKER_NUMBER; i++){
var c = null;
if (debug){
c = cp.fork(WORKER_PATH,{execArgv: [ '--debug='+(process.debugPort+i+1) ]});
}else{
c = cp.fork(WORKER_PATH);
}
c.send({"server" : true}, handle);
childs.push(c);
}
function isDebug(){
for(var i=0;i<process.execArgv.length;i++){
if(process.execArgv[i].indexOf("--debug")==0 ){
return true;
}
}
return false;
}
}
参考
- 在https://github.com/windyrobin/iCluster 基础上我做了一些修改 :https://github.com/h63542/iCluster
- cluster和child_process两种负载均衡模式区别:http://www.cnblogs.com/tingshuo/archive/2013/01/17/2864280.html
1 回复