使用PM2管理进程,处理未捕获异常和Promise拒绝,启用集群模式提升性能与容错,提供健康检查接口配合外部监控,确保Node.js应用高可用。

构建一个高可用的 Node.js 应用,关键在于进程管理、错误处理和自动恢复机制。Node.js 是单线程事件循环模型,一旦主线程崩溃,整个服务就会中断。因此,必须通过合理设计避免崩溃,并在崩溃后快速重启。
使用进程管理工具实现自动重启
生产环境中绝不能直接用 node app.js 启动应用。应使用专门的进程管理器来监控和重启崩溃的进程。
推荐使用以下工具:
PM2:功能完整,支持集群模式、日志管理、监控和零停机重启 Forever:轻量级,适合简单场景下的自动重启
以 PM2 为例:
npm install -g pm2
pm2 start app.js –name “my-app” –watch
pm2 startup
pm2 save
这样配置后,PM2 会监听文件变化、自动重启崩溃进程,并在系统重启后自启服务。
正确处理未捕获的异常与拒绝的 Promise
未处理的异常是导致进程退出的主要原因之一。即使有 try-catch,异步操作中的错误仍可能逃逸。
添加全局错误监听器:
process.on(‘uncaughtException’, (err) => {
console.error(‘未捕获的异常:’, err);
// 记录日志后安全退出,由 PM2 重启
process.exit(1);
});
process.on(‘unhandledRejection’, (reason, promise) => {
console.error(‘未处理的 Promise 拒绝:’, reason);
// 可选择退出进程
process.exit(1);
});
注意:捕获这些错误后不建议继续运行,因为应用可能处于不一致状态。应让进程退出,交由 PM2 重启。
利用集群模式提升可用性
Node.js 单实例只能使用一个 CPU 核心。通过 cluster 模块可以启动多个工作进程,共享同一个端口,提高吞吐量并增强容错能力。
PM2 默认支持集群模式:
pm2 start app.js -i max
这会根据 CPU 核心数启动对应数量的工作进程。某个进程崩溃时,其他进程仍可继续服务,PM2 会立即重启失败的实例。
健康检查与外部监控
高可用系统需要外部监控来及时发现问题。
在应用中提供健康检查接口:
app.get(‘/health’, (req, res) => {
res.status(200).json({ status: ‘OK’, timestamp: new Date() });
});
配合 Nginx 或负载均衡器做健康探测,或使用 Prometheus + Grafana 进行指标收集和告警。
基本上就这些。关键是把进程交给 PM2 管理,处理好异常,启用多实例,再加一层监控。系统更稳,出问题也能快速恢复。
以上就是如何构建一个高可用的Node.js应用,并处理进程崩溃与重启?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1530315.html
微信扫一扫
支付宝扫一扫