2013-09-27 32 views
1

我正在使用nodejs爲Web服務構建脫機緩存系統。 基本上,它偶爾輪詢Web服務的公共方法並將數據緩存在memcached中。 工程就好了。Gracefuly處理Nodejs中的異常

但是,我希望它是防彈的,並能夠在任何未捕獲的異常情況下生存下來,從而降低服務器的性能。 我已經閱讀了各種不同的方法,並且我相信集羣模塊非常適合我的需求。但是,我不會爲我的目的使用所有CPU內核,因爲我只有1個線程正在運行並更新緩存。

我會用它,唯一的原因是爲了讓工人的優雅殺滅和容易分叉一個新

var memwatch = require('memwatch'), 
    cluster = require('cluster'); 

if (cluster.isMaster) { 

    console.log('start cluster with 1 workers'); 
    cluster.fork(); 
    cluster.on('exit', function(worker) { 
     console.log('worker %s died. restart...', worker.process.pid); 
     cluster.fork(); 
    }); 
} else { 
    var http = require('http'), 
     app = require("./app.js"); 
    http.createServer().listen(9000); 
    app.init(); 
} 

process.on('uncaughtException', function (err) { 
    console.error((new Date).toUTCString() + ' uncaughtException:', err.message) 
    console.error(err.stack) 
    process.exit(1) 
}) 

memwatch.on("leak", function(){ 
    console.log("leak detected"); 
}); 

你會認爲這是一個正確的做法,以我的問題呢?

感謝

回答

1

如果你正在運行只是一個工人,它更容易使用監事像foreverpm2,它們是專爲這項任務編寫的。如果您計劃添加更多的工作人員並使用羣集負載平衡,那麼是的,這無疑是一種正確的方法。