节点JS – 日志工作者群集最后一个exception

我正在使用Node JS服务器(0.10.30)以及其集群function。 每次工人终止时,我都会遇到“退出”事件并重新启动一名新工人。 我还想logging(在主集群上)工作者被终止的原因,例如exception或致命错误。

怎么做?

我的app.js文件看起来像这样:

var cluster = require('cluster'); var numCPUs = 2; if (cluster.isMaster) { for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', function(worker, code, signal) { console.log('worker %d died. Starting a new worker:', worker.id); cluster.fork(); }); } else { var domain = require('domain'); var d = domain.create(); d.on('error', function(er) { console.error('error: ', er.stack); // I never get the memory fatal error here }); d.run(function() { // The memory runs out in an async call }); } 

谢谢,埃雷兹

那么,您可以使用send()函数将工作人员的消息发送给主服务器,如文档中所述:

http://nodejs.org/api/cluster.html#cluster_worker_send_message_sendhandle

但是Node的一个基本原则是使用stdout和stderr,所以我可能只是做一个console.error('whatever you need to say'); 如果是我。

====根据评论====更新

在大多数情况下,如果一个进程崩溃,这是因为一个未捕获的exception。 所以,如果你能预料到这些例外情况,那么就听他们适当的对象。 为了捕获您没有预测到的错误,请在进程上侦听uncaughtException事件,并在该处理程序中发送消息或控制台