当前位置: 首页 > news >正文

Node.js项目开启多进程的2种方案

当node项目只部署一个单进程单实例时,遇到异常发生后程序会崩溃,此时杀掉进程在重启单这段时间会导致服务不能正常使用,这显然会影响用户体验。

所以需要以多进程的模式去部署应用,这样当某一个进程发生异常重启时,此时有其他请求被接受后,其他进程依旧可以对外提供服务,当然前提是你的应用不能够异常多的数不过来。

一、在Node.js应用中使用cluster模块

1、Cluster 核心机制

原理‌:主进程(Master)创建多个子进程(Worker),共享同一个 TCP 端口,Master 通过 Round-robin 算法分配请求。

优势‌:

  • 多核 CPU 利用率提升 200%~300%
  • 高并发场景下请求处理能力翻倍
  • 单个 Worker 崩溃时自动重启保障服务可用性

通过合理使用 Cluster 模块,可使 Node.js 应用的并发处理能力提升 3 倍以上。建议通过压力测试工具(如 autocannon)验证实际性能提升效果。

2、基础使用

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

// 主进程逻辑
if (cluster.isMaster) {
  console.log(`主进程 PID: ${process.pid}`);

  // 根据 CPU 核心数创建 Worker
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  // Worker 异常退出时自动重启
  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} 退出`);
    cluster.fork(); // 重新创建 Worker
  });

// Worker 进程逻辑
} else {
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('请求由 Worker ' + process.pid + ' 处理');
  }).listen(3000);

  console.log(`Worker 进程 PID: ${process.pid} 已启动`);
}

关键 API 

cluster.isMaster 判断当前进程是否为主进程
cluster.fork() 创建新的 Worker 进程(最多建议创建 CPU 核心数 × 1.5 个)[^4]
cluster.on('exit') 监听 Worker 退出事件
worker.process.pid 获取 Worker 的进程 ID

3、进阶用法 

<

相关文章:

  • C/C++的数据类型
  • 编程通用-配置文件的选择
  • Django从零搭建卖家中心登陆与注册实战
  • 为了四季度的盈利,李斌的换人还在继续
  • Java Stream深度解析 高阶技巧与性能优化实战
  • 高等数学同步测试卷 同济7版 试卷部分 上 做题记录 第三章微分中值定理与导数的应用同步测试卷 B 卷
  • C++中string库常用函数超详细解析与深度实践
  • Java数组初始化全解析:方式、场景与最佳实践
  • 嵌入式基础(二)ARM基础
  • 瑞幸微RK系列平台的YOLO部署(上篇)
  • Python学习笔记(列表)
  • 使用wpa_cli和wpa_supplicant配置Liunx开发板的wlan0无线网
  • idea的快捷键使用以及相关设置
  • mybatis--多对一处理/一对多处理
  • 数据库的种类及常见类型
  • L3-027 可怜的复杂度(纯暴力)
  • 供应链管理:供应链管理的边界
  • HTTP协议 --- 超文本传输协议 和 TCP --- 传输控制协议
  • 什么是端点日志监控
  • spark中,shuffle read和shuffle write的先后顺序是什么
  • 朱守科已任西藏自治区政府党组成员、自治区公安厅党委书记
  • 广汽全域赋能,领程皮卡概念车重磅登陆上海车展
  • 印尼塔劳群岛发生6.2级地震,震源深度140千米
  • 民生访谈|电动自行车换新补贴会优化吗?今年汛期情况如何?市应急局回应
  • 中国墨西哥商会副执行主席:深耕中国市场18年,对未来充满信心
  • 五一出游火爆!热门线路抢票难度堪比春运,有热门目的地酒店价格涨近4倍