目录

PM2-NodeJS进程守护程序

1. PM2 是什么?

PM2(Process Manager 2)是目前最主流的 Node.js 生产环境进程管理器。它自带负载均衡、日志管理、性能监控和热重载功能。

如果你只是用 node app.js 启动程序,一旦代码报错或者服务器重启,你的服务就直接挂了。PM2 的存在就是为了确保你的程序7x24 小时永不掉线


2. 安装步骤

PM2 是一个全局的 npm 包,安装非常简单:

# 使用 npm 安装
npm install pm2@latest -g

# 或者使用 yarn
yarn global add pm2

安装完成后,输入 pm2 -v 能看到版本号就说明成功了。


3. 基础使用教程

启动应用

最简单的启动方式:

pm2 start app.js

为了方便管理,通常我们会给进程起个名字

pm2 start app.js --name "my-server"

自动保存与开机自启

这是最实用的功能。配置后,即便服务器断电重启,你的服务也会自动拉起:

  1. 保存当前列表pm2 save

  2. 生成自启脚本pm2 startup(根据提示拷贝并执行那行生成的命令即可,新版本可能不需要再执行额外命令)。

常用管理命令

  • 查看状态pm2 list (或者 pm2 status),查看所有进程的 CPU 和内存占用。

  • 停止/重启pm2 stop [Name/ID]pm2 restart [Name/ID]

  • 删除进程pm2 delete [Name/ID](停止并从列表中移除)。

  • 实时日志pm2 logs(调试神技,能看到控制台输出的所有信息)。


4. 进阶神技

负载均衡模式 (Cluster Mode)

如果你的服务器是多核 CPU,你可以让 PM2 自动开启多个实例来分担压力:

Bash

# 启动 4 个实例
pm2 start app.js -i 4

# 或者根据 CPU 核心数自动分配
pm2 start app.js -i max

5. 最佳实践:使用配置文件

在项目根目录创建一个 ecosystem.config.js,以后只需要执行 pm2 start 就能按配置启动了:

JavaScript

module.exports = {
  apps : [{
    name: "my-app",
    script: "./app.js",
    instances: "max",       // 开启集群模式
    exec_mode: "cluster",
    watch: true,            // 监听代码变化自动重启
    env: {
      NODE_ENV: "development",
    },
    env_production: {
      NODE_ENV: "production",
    }
  }]
}