2011-07-03 44 views

回答

0
在脚本的崩溃,你会每次有停工的情况下

,这是不可能的,以防止。但是,您可以使用forever.js在崩溃时自动重启脚本。

1

根据您的使用案例,应用程序样式和状态,还可以启动运行相同应用程序的多个节点进程,并在前面放置反向代理/负载均衡器(即HAProxy)。在进程崩溃的情况下,只要节点尚未重新启动,负载均衡器就会将新请求分派给其他进程。这也通过利用多个内核来提高性能。但是,诸如会话之类的共享状态可能更难以处理(即外部使用Redis)。

2

我采取了一种类似于PartlyCloudy的方法,只是在同一进程中使用多个节点线程,并将OS用作负载平衡器而不是单独的一个。

所以我在我的 “app.coffee” 代码代码这是一个从被盗:

我只加一 “的setTimeout”。在5-20秒的时间内,我可以在8个内核中分配16个分支,而不是8个分支,但这对我来说比宕机时间要好。

var childProcesses, cluster, i, numCPUs, signals, _i; 

cluster = require('cluster'); 
numCPUs = require('os').cpus().length; 

if (cluster.isMaster) { 
    childProcesses = []; 
    for (i in numCPUs) { 
    childProcesses[i] = cluster.fork(); 
    } 
    signals = ["SIGINT", "SIGTERM", "SIGQUIT"]; 
    for (i in signals) { 
    process.on(signals[i], function() { 

     // THIS IS WHAT KEEPS IT UP 
     setTimeout(function() { 
     var j; 
     for (j in childProcesses) { 
      childProcesses[j].kill(); 
     } 
     process.exit(); 
     }, 20000); 

    }); 
    } 
    cluster.on('exit', function(worker, code, signal) { 
    childProcesses.push(cluster.fork()); 
    }); 
} else { 
    app.listen(3000); 
} 
相关问题