pm2介绍

半兽人 发表于: 2025-06-24   最后更新时间: 2025-06-24 17:57:36  
{{totalSubscript}} 订阅, 35 游览

pm2 是 Node.js 应用的进程管理工具(Process Manager 2 的缩写),用于 管理和守护运行中的 Node.js 应用程序。它可以让你的应用在后台运行、崩溃自动重启、日志记录、负载均衡、开机自启等。

一、PM2 能做什么?

简单总结:

功能 说明
守护进程(daemon)运行 程序在后台运行,不受终端关闭影响
崩溃自动重启 程序挂掉后自动重启
日志管理 自动生成并记录 stdout / stderr 日志
进程监控 实时查看 CPU / 内存占用
开机启动 设置成系统启动时自动运行
负载均衡 多核 CPU 下的 cluster 模式

二、安装与基本用法

1. 安装

npm install -g pm2

2. 启动你的应用

假设你有个 app.js 文件:

pm2 start app.js

3. 查看进程状态

pm2 list

4. 日志查看

pm2 logs

5. 重启 / 停止 / 删除进程

pm2 restart app
pm2 stop app
pm2 delete app

6. 保存进程列表

pm2 save

7. 设置开机启动

pm2 startup

运行命令后会输出一条系统命令,比如:

sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u username --hp /home/username

复制执行后,再执行 pm2 save

三、进阶功能

1. 多实例模式(利用多核 CPU)

pm2 start app.js -i max

-i max 会根据 CPU 核心数自动启动多个实例(cluster 模式)。

2. 使用配置文件(推荐)

创建 ecosystem.config.js

module.exports = {
  apps: [
    {
      name: "my-app",
      script: "./app.js",
      instances: 2,
      exec_mode: "cluster",
      watch: true,
      env: {
        NODE_ENV: "development"
      },
      env_production: {
        NODE_ENV: "production"
      }
    }
  ]
}

启动:

pm2 start ecosystem.config.js --env production

app.js是什么?

应用程序的入口文件:

pm2 start dist/main.js      # 如果是 NestJS
pm2 start .next/standalone/server.js  # 如果是 Next.js
pm2 start server/index.js   # 如果你自己放在 server 目录

四、PM2 的优点

优点 描述
稳定性高 进程崩溃后会自动重启
易于部署 可以通过配置文件快速部署多服务
支持日志查看与管理 支持日志切割、查看、导出
多进程支持 自动将服务部署在多个 CPU 核心上,提高性能
跨平台 支持 macOS / Linux / Windows
开机自启 保证服务上线后自动运行

五、适用场景

  • 部署 Node.js Web 应用(如 Express、Koa)
  • 启动后端 API 服务
  • 在服务器上长期运行的脚本任务
  • 多核并发任务(配合 cluster 模式)

比如在 Next.js、NestJS 或 Vite SSR 项目中,pm2 都可以作为后台启动管理工具使用,替代 node app.jsnpm run start 等传统方式。

pm2
更新于 2025-06-24
在线,9分钟前登录

查看pm2更多相关的文章或提一个关于pm2的问题,也可以与我们一起分享文章