首页主机资讯Ubuntu中Node.js集群如何配置

Ubuntu中Node.js集群如何配置

时间2026-01-20 03:45:04发布访客分类主机资讯浏览752
导读:Ubuntu 上配置 Node.js 集群 一 准备环境 更新索引并安装 Node.js 与 npm(Ubuntu 20.04/22.04/24.04 通用): 快速安装(默认仓库):sudo apt update &&...

Ubuntu 上配置 Node.js 集群

一 准备环境

  • 更新索引并安装 Node.js 与 npm(Ubuntu 20.04/22.04/24.04 通用):
    • 快速安装(默认仓库):sudo apt update & & sudo apt install -y nodejs npm
    • 如需指定版本(推荐 NodeSource 分发):
      • curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
      • sudo apt install -y nodejs
    • 验证:node -v 与 npm -v 输出版本号即可。

二 方案一 使用内置 Cluster 模块

  • 最小可用示例(按 CPU 核心数启动工作进程,主进程崩溃自动重启):
    • 代码示例(保存为 app.js):
      • const cluster = require(‘cluster’); const http = require(‘http’); const os = require(‘os’); const numCPUs = os.cpus().length; if (cluster.isPrimary) { console.log(Master ${ process.pid} is running); for (let i = 0; i < numCPUs; i++) cluster.fork(); cluster.on(‘exit’, (worker, code, signal) => { console.log(worker ${ worker.process.pid} died, restarting...); cluster.fork(); } ); } else { http.createServer((req, res) => { res.writeHead(200); res.end(Hello from worker ${ process.pid} \n); } ).listen(8000, () => console.log(Worker ${ process.pid} listening on 8000)); }
    • 运行与验证:
      • 启动:node app.js
      • 本机验证:curl http://localhost:8000(多次请求可见不同 worker pid)
      • 进程检查:ps aux | grep node(应看到多个 node 进程)
    • 说明:Node.js 在 Linux 上默认使用内核的轮询(round-robin)策略分发连接,多个 worker 共享同一端口,主进程负责管理与转发。

三 方案二 使用 PM2 一键集群

  • 安装与启动:
    • 全局安装:sudo npm install -g pm2
    • 启动集群模式:pm2 start app.js -i max(-i max 将按 CPU 核心数启动相应数量实例)
    • 常用运维:
      • 查看状态:pm2 status
      • 查看日志:pm2 logs
      • 平滑重启:pm2 restart app
      • 停止:pm2 stop app
  • 适用场景:需要进程守护、日志聚合、零停机重启、监控与多实例编排时更省心。

四 生产要点与常见问题

  • 进程数量与 CPU 绑定
    • 一般将 worker 数量设置为不超过CPU 物理核心数,避免过多上下文切换;CPU 密集型任务可适当接近核心数,I/O 密集型可略多并配合限流。
  • 有状态与共享数据
    • worker 之间不共享内存,登录态、缓存等应使用 Redis 等外部存储;避免依赖内存中的单例状态。
  • 优雅退出与信号
    • 处理 SIGTERM/SIGINT,停止接收新请求,完成在途请求后再退出;主进程捕获 worker 的 ‘exit’ 事件并重启,提升可用性。
  • 负载均衡策略
    • Node.js 默认使用 round-robin 分发连接;可通过环境变量 NODE_CLUSTER_SCHED_POLICY 或 cluster.setupMaster 调整策略。
  • 端口与对外暴露
    • 单机多进程通常只暴露一个端口;如需对外多机扩展,可在前端加 Nginx/HAProxy 做反向代理与更高层负载均衡。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu中Node.js集群如何配置
本文地址: https://pptw.com/jishu/786615.html
Linux RabbitMQ如何监控与日志 Node.js在Ubuntu上性能如何优化

游客 回复需填写必要信息