如何在Ubuntu上实现Node.js的集群模式
在Ubuntu上,利用Node.jscluster模块创建多工作进程共享同一端口,充分利用多核CPU。主进程fork子进程,默认采用轮询负载均衡。也可使用pm2工具自动管理进程,并设置最大核心数,提升应用并发处理能力。
说到Node.js的集群模式,其实核心目标很明确:让应用能真正“吃透”多核CPU的性能。毕竟Node.js默认是单线程的,跑在单核上总有种“明明有资源却用不上”的憋屈感。下面就是一套在Ubuntu上从零搭建集群模式的完整流程,包括代码和操作细节,关键步骤都配了示例。

1. 安装Node.js
先确保Ubuntu上已经装了Node.js,没装的话用下面这行经典命令搞定:
sudo apt update
sudo apt install nodejs npm
2. 创建Node.js应用
新建一个文件,比如叫app.js,里面写一个最朴素的HTTP服务器:
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200);
res.end('Hello World\n');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
3. 使用Node.js的集群模块
Node.js的cluster模块允许我们创建多个工作进程,这些进程能共享同一个端口。下面这个例子展示了如何利用它让应用跑满所有CPU核心——先判断当前进程是主进程还是工作进程,主进程负责fork,工作进程则各自启动服务:
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
// Fork workers.
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
// Workers can share any TCP connection
// In this case it is an HTTP server
const server = http.createServer((req, res) => {
res.writeHead(200);
res.end('Hello World\n');
});
server.listen(3000, () => {
console.log(`Worker ${process.pid} started`);
});
}
4. 运行应用
终端里直接执行:
node app.js
5. 验证集群模式
想知道是不是真的起了多个进程?用netstat或lsof看一眼3000端口就知道:
sudo netstat -tuln | grep 3000
或者:
sudo lsof -i :3000
正常的话,你会看到多个进程同时在监听这个端口——没错,它们都是同一应用的不同实例。
6. 负载均衡
cluster模块默认采用轮询(round-robin)算法来分配请求。如果业务场景特殊,需要自定义负载均衡策略?没问题,但默认方式在大多数场景下已经够用了。
7. 监控和管理
生产环境里不可能只靠手工重启,所以需要工具来管理集群中的工作进程。pm2是这里的老面孔了,安装和使用都非常直接:
npm install pm2 -g
用pm2启动应用并自动根据CPU核心数创建对应数量的进程:
pm2 start app.js -i max
-i max这个参数就是关键——它会自动检测CPU核心数并启动相应数量的工作进程,省去手动fork的功夫。
按照这套流程操作,Node.js应用就能真正利用起Ubuntu服务器的多核能力,并发处理性能和可靠性都会上升一个台阶。当然,集群模式只是高可用的第一步,后续还可以结合反向袋里、日志、健康检查等手段进一步完善。
IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。
JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。
JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。
JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,
PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,
PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,













