js实现PM2多进程原理(简版)
乔文飞 Lv8

了解进程&线程&协程

app.js

前端实现的node项目

1
2
3
4
5
6
// worker
var http = require('http');
http.createServer(function(req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8000);

pm2.js

模拟PM2多进程

1
2
3
4
5
6
7
8
9
10
11
12
13
// master
var cluster = require('cluster');
var numCPUs = require('os').cpus().length; // 多核cpu的核数

// cluster.isMaster为true,表示是主进程
if (cluster.isMaster) {
console.log(numCPUs);
for (var i = 0; i < numCPUs; i++) {
var worker = cluster.fork();
}
} else {
require("./app.js");
}
  • pm2.js运行后,会创建一个主进程(父进程master)。
  • 然后创建numCPUs个node进程,这些进程相当于子进程。受到主进程master的管理,调度分配
    共创建了numCPUs+1个进程

    重点在cluster.fork()来fork子进程。然后cluster.isMaster为false时,创建的子进程去require("./app.js"),实现多进程管理。

  • 本文标题:js实现PM2多进程原理(简版)
  • 本文作者:乔文飞
  • 创建时间:2020-07-07 11:43:27
  • 本文链接:http://www.feidom.com/2020/07/07/js实现PM2多进程原理(简版)/
  • 版权声明:本博客所有文章为作者学习笔记,有转载其他前端大佬的文章。转载时请注明出处。