gpt4 book ai didi

node.js - 优雅地处理 Node Js 中的异常

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:47 25 4
gpt4 key购买 nike

我正在使用nodejs为Web服务构建离线缓存系统。基本上,它会偶尔轮询一次 Web 服务的公共(public)方法,并将数据缓存在 memcached 中。工作得很好。

但是,我希望它是防弹的,并且能够承受任何未捕获的异常,从而导致服务器崩溃。我已经阅读了不同的方法,并且我相信集群模块非常适合我的需求。但是,我不会使用所有 CPU 核心来实现我的目的,因为我只有 1 个线程运行和更新缓存。

我使用它的唯一原因是允许优雅地杀死 worker 并轻松 fork 一个新 worker

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

您认为这是解决我的问题的正确方法吗?

谢谢

最佳答案

如果您只运行一个工作线程,那么使用 foreverpm2 这样的主管会更容易,它们是专门为此任务编写的。如果您计划添加更多工作人员并使用集群负载平衡,那么是的,这无疑是一个正确的方法。

关于node.js - 优雅地处理 Node Js 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19048520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com