Apache Web Server 有一个名为 MaxRequestsPerChild 的配置参数。 http://httpd.apache.org/docs/2.0/en/mod/mpm_common.html#maxrequestsperchild “MaxRequestsPerChild 请求后,子进程会死掉。”
为了避免由于内存泄漏、连接过多或其他意外错误导致的崩溃,在使用 node.js Cluster 模块时我应该做同样的事情吗?
*我在 node.js 前使用 Nginx,而不是 Apache。我提到它,以便我可以轻松解释。
我只是这样实现它:
var maxReqsPerChild = 10; // Small number for debug
var numReqs = 0;
if (cluster.isMaster) {
var numCPUs = require('os').cpus().length;
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('death', function(worker) {
// Fork another when one died
cluster.fork();
});
} else {
http.createServer(function(webReq, webRes) {
// Count up
numReqs++;
// Doing something here
// Kill myself
if (numReqs > maxReqsPerChild) {
process.kill(process.pid); // Or more simply, process.exit() is better?
}
}).listen(1338);
}
到目前为止,这一直运作良好,但我想知道还有更合适的方法。