PM2

PM2 是 node 进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

pm2 官网open in new window

创建进程的两种方式了解即可

  1. fork
  2. 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!

Last Updated:
Contributors: kk