1

nodejs を使用して、Web サービスのオフライン キャッシュ システムを構築しています。基本的に、Web サービスのパブリック メソッドをときどきポーリングし、データを memcached にキャッシュします。うまく動作します。

ただし、私はそれを防弾とし、サーバーをダウンさせるキャッチされていない例外に耐えられるようにしたいと考えています。さまざまなアプローチについて読んだことがありますが、クラスター モジュールは私のニーズに本当に適していると思います。ただし、キャッシュを実行して更新するスレッドは 1 つだけなので、この目的のためにすべての CPU コアを使用するわけではありません。

私がそれを使用する唯一の理由は、ワーカーを優雅に殺し、新しいものを簡単にフォークできるようにすることです

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");
});

私の問題に対する正しいアプローチだと思いますか?

ありがとう

4

1 に答える 1