PM2
PM2 是 node 进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。
创建进程的两种方式了解即可
- fork
- exec
PM2 源码简读
PM2核心代码如下:
// app.js
const http = require('http');
http.createServer(function(req, res) {
res.writeHead(200);
res.end ('Hello kk👩🏻💻');
}).listen(3000);
// pm2.js
var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
// 判断当前进程是不是主进程,即第一个被创建出来的进程
if (cluster.isMaster) {
// 打印出cpu核心个数
console.log(numCPUs);
for (var i = 0; i < numCPUs; i++) {
// 循环cpu的核心就创建几个主进程的fork
var worker = cluster.fork();
}
} else {
// 不是主进程,执行子进程的代码
require("./app.js");
}
知识点
Nodejs是I/O密集型,尽可能的去减少进程的实例,一个核心配一个进程可以最大限度的去利用cpu。
如果只用一核,其他核cpu就被闲置了。
进程在创建子进程的时候要fork,主进程在监控子进程,每过一段时间轮询一下,看一下进程是不是还在进行,如果死了,就再拉起一个。
总的一句话就是: 最大限度的使用cpu 👏👏👏
PM2的核心就是可以操作OS!