在 Node.js 中,可以通过多种方式开启多进程以提高性能和处理能力。其中最常见的方法是使用 Node.js 内置的 cluster
模块。cluster
模块允许你轻松地创建共享服务器端口的子进程(工作进程)。
以下是一个使用 cluster
模块开启多进程的简单示例:
- 创建一个主进程文件(例如
app.js
):
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. Restarting...`);
cluster.fork();
});
} else {
// Workers can share any TCP connection
// In this case, it is an HTTP server
http.createServer((req, res) => {
res.writeHead(200);
res.end('Hello Worldn');
}).listen(8000);
console.log(`Worker ${process.pid} started`);
}
- 运行主进程文件:
node app.js
解释
检测是否是主进程:
if (cluster.isMaster) { // 主进程代码 } else { // 工作进程代码 }
获取 CPU 核心数:
const numCPUs = require('os').cpus().length;
创建工作进程:
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(); });
工作进程中创建 HTTP 服务器:
http.createServer((req, res) => { res.writeHead(200); res.end('Hello Worldn'); }).listen(8000);
注意事项
- 端口共享:
cluster
模块允许所有工作进程共享同一个端口。这意味着你不需要为每个工作进程分配不同的端口。 - 负载均衡:
cluster
模块内置了负载均衡机制,会自动将传入的连接分配给不同的工作进程。 - 进程监控:如果某个工作进程意外退出,主进程会自动重启它。
通过这种方式,你可以利用多核 CPU 的优势,提高 Node.js 应用的性能和可靠性。
学在每日,进无止境!更多精彩内容请关注微信公众号。

原文出处:
内容由AI生成仅供参考,请勿使用于商业用途。如若转载请注明原文及出处。
出处地址:http://www.07sucai.com/tech/136.html
版权声明:本文来源地址若非本站均为转载,若侵害到您的权利,请及时联系我们,我们会在第一时间进行处理。