Skip to content

03 如何创建守护进程

Sky edited this page Apr 21, 2016 · 2 revisions

默认情况下,当程序遇到异常或者主动调用 process.exit() 会导致应用程序退出,使用守护进程可以监听进程状态,在退出时自动重新启动,以保持进程的持久运行。

https://github.com/eshengsky/iBlog2/blob/master/daemon.js#L17-L28

//监听退出事件
cluster.on('exit', function (worker, code, signal) {
    if (code !== 0) {
        console.error('worker:%d 异常退出(%s),30s后尝试重启...', worker.process.pid, signal || code);
        setTimeout(function () {
            var new_worker = cluster.fork();
            console.log('worker:%d 正在运行...', new_worker.process.pid);
        },30000);
    } else {
        console.log('worker:%d 正常退出!', worker.process.pid);
    }
});

注意 exit code 为 0 表示正常情况的退出。