跳转到内容

PM2

PM2 是一款带有负载均衡功能的 Node.js 应用的进程管理器。它不仅能让 Node 脚本在后台持续运行(守护进程),还能提供性能监控、自动重启及支持多实例部署。

安装指令npm install pm2 -g


在生产环境中,强烈建议使用 ecosystem 配置文件来统一管理启动参数,而非在命令行拼写冗长的参数。

// ecosystem.config.js 示例
module.exports = {
apps: [
{
name: 'tm_nuxt_app', // 进程别名,方便 pm2 管理
script: 'npm', // 执行脚本的解释器/入口
args: 'start', // 传递给 script 的参数 (相当于执行 npm start)
// 高级选项 (被注释的部分)
// exec_mode: 'cluster', // 开启集群模式,最大化利用多核 CPU
// instances: 'max', // 启动的实例数量,'max' 会自动探测 CPU 核心数
// watch: true, // 监听文件变动,自动重启 (仅开发环境建议)
// env: { NODE_ENV: "production" } // 注入环境变量
}
]
}

Terminal window
# 基于配置文件启动 (需在同级目录下执行)
pm2 start ecosystem.config.js
# 直接启动单个脚本
pm2 start test.py # 甚至会自动调用对应的 python 解释器
pm2 start test.js --name "my-app" --watch
# 查看监控面板
pm2 list # 查看所有进程的列表与状态
pm2 monit # 实时终端仪表盘 (CPU/内存)
pm2 logs # 查看所有或特定进程的聚合日志

3.2. 状态持久化与系统级开机自启

Section titled “3.2. 状态持久化与系统级开机自启”

如果服务器重启,PM2 及其管理的进程会丢失。为了保证高可用,必须执行以下流程:

Terminal window
# 第一步:保存当前 PM2 正在托管的所有进程状态到 dump 文件
pm2 save
# 第二步:生成并配置系统层面的开机自启动脚本 (Systemd)
pm2 startup
# (执行该命令后,终端会输出一段需 sudo 执行的指令,请复制并执行它)
# 第三步 (故障恢复):若需要手动从之前的保存点恢复进程树
pm2 resurrect