Apache Web サーバーには、MaxRequestsPerChild という構成パラメーターがあります。 http://httpd.apache.org/docs/2.0/en/mod/mpm_common.html#maxrequestsperchild "MaxRequestsPerChild リクエストの後、子プロセスは終了します。"
メモリ リーク、接続数が多すぎる、またはその他の予期しないエラーによるクラッシュを回避するには、node.js クラスター モジュールを使用するときに同じことを行う必要がありますか?
*node.js の前に Apache ではなく Nginx を使用しています。簡単に説明できるように言及しました。
私はちょうどそれを次のように実装しました:
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);
}
これは今までうまく機能していましたが、もっと適切な方法があるのではないかと思っています。