朝阳博客

  • Article
  • Project
  • HTML+CSS
  • Bootstrap
  • JavaScript
  • jQuery
  • PHP
  • Java
  • Linux
  • MySQL
朝阳博客
一款专注于博客的响应式网站
  1. 首页
  2. 未分类
  3. 正文

PM2 指南:Node.js 生产环境的“瑞士军刀”

2026年3月17日 1点热度 0人点赞 0条评论

你的 Node.js 应用还在裸奔运行吗?还在用 node app.js  这种原始方式部署?是时候让 PM2 来接管了!不管你是 Node.js 新手,还是需要部署生产环境的开发者,本文都能帮你全面掌握这个必备神器,从基础使用到高级配置,简洁好懂、一网打尽。

一、为什么必须用 PM2?不只是守护进程

1. 传统部署的致命缺陷(新手必避坑)

# 🚨 新手常见错误部署方式
node app.js &              # 后台运行,但崩溃不重启
nohup node app.js &        # 日志管理麻烦
screen/tmux 运行           # 多实例管理复杂
forever start app.js       # 功能单一,监控能力弱

2. PM2 核心优势(一站式解决方案)

# PM2 一键搞定
pm2 start app.js        
# 1. 进程守护(崩溃自动重启)
# 2. 多核利用(cluster 模式)
# 3. 日志管理(自动切割归档)
# 4. 监控面板(实时状态查看)
# 5. 零秒重启(无停机热更新)

二、基础:5分钟快速上手

1. 安装与基本使用

# 全局安装(一次安装,终身可用)
npm install pm2 -g

# 启动应用(最简形式,app.js 是你的入口文件)
pm2 start app.js

# 查看所有进程(常用)
pm2 ls  # 或 pm2 list

# 监控面板(可视化查看状态)
pm2 monit

# 查看日志(排查错误超有用)
pm2 logs              # 所有应用日志
pm2 logs app          # 指定应用日志
pm2 logs --lines 100  # 查看最近100行

2. 核心进程管理命令(记这几个就够)

# 启动相关
# 指定应用名,方便管理
pm2 start app.js --name "my-api"
# 启动4个实例(多核利用)
pm2 start app.js -i 4   
# 文件变化自动重启(开发用)
pm2 start app.js --watch            

# 停止/删除相关
pm2 stop app         # 停止指定应用
pm2 stop all         # 停止所有应用
pm2 delete app       # 删除指定应用
pm2 delete all       # 删除所有应用

# 重启相关
pm2 restart app      # 普通重启(先停后启)
pm2 reload app       # 零秒重启(优雅重启,生产首选)

三、进阶:生产环境配置实战

1. 用配置文件管理(推荐,更规范)

创建 ecosystem.config.js 文件,统一配置应用参数,适合生产环境:

// ecosystem.config.js
module.exports = {
apps: [{
    name: 'my-app',          // 应用名
    script: './app.js',      // 入口文件
    instances: 'max',        // 启动所有CPU核心(多核利用)
    exec_mode: 'cluster',    // 开启cluster模式
    max_memory_restart: '1G',// 内存超1G自动重启(防泄漏)
    autorestart: true,       // 崩溃自动重启
    log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志时间格式
    error_file: '/var/log/pm2/my-app-err.log', // 错误日志路径
    out_file: '/var/log/pm2/my-app-out.log',   // 输出日志路径
    env: {                   // 开发环境配置
      NODE_ENV: 'development',
      PORT: 3000
    },
    env_production: {        // 生产环境配置
      NODE_ENV: 'production',
      PORT: 80
    }
  }]
}

启动命令:pm2 start ecosystem.config.js --env production

2. 关键进阶配置(生产必配)

  • 日志轮转:安装 pm2 install pm2-logrotate,防止日志占满磁盘;

  • 开机自启:pm2 save 保存进程列表,再执行 pm2 startup 生成自启脚本;

  • 健康检查:在配置文件中添加健康检查,实时监控应用状态。

四、运维:日志、监控与问题排查

1. 日志管理

pm2 logs          # 实时查看日志
pm2 flush         # 清空所有日志
pm2 reloadLogs    # 重新加载日志配置

2. 常见问题排查

  • 进程频繁重启:用 pm2 logs app --lines 50 查看错误原因,大概率是内存泄漏或代码报错;

  • 日志过大:安装日志轮转模块,或手动执行 pm2 flush;

  • 进程状态异常:用 pm2 describe app 查看详细配置,排查端口冲突或依赖问题。

五、常用命令速查表(快速查阅)

功能
命令
说明
启动应用
pm2 start app.js
最简启动
查看进程
pm2 ls / pm2 list
查看所有应用状态
重启应用
pm2 reload app
优雅重启,无停机
查看日志
pm2 logs app
查看指定应用日志
开机自启
pm2 startup
生成自启脚本

六、最佳实践总结

  1. 生产环境优先用 ecosystem.config.js 配置,不用命令行参数;

  2. 开启 cluster 模式,充分利用多核CPU,提升性能;

  3. 配置日志轮转和内存限制,避免磁盘爆满、内存泄漏;

  4. 重启用 pm2 reload,实现零停机更新;

  5. 定期执行 pm2 save,备份进程列表。

PM2 不只是进程守护工具,更是 Node.js 生产部署的完整解决方案。告别原始部署方式,用 PM2 让你的应用更稳定、更高效,新手也能轻松搞定生产环境!


标签: 暂无
最后更新:2026年3月17日

aiyao

你要加油,你喜欢的人还没结婚。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2021 zhaoyangweb.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

冀ICP备2021020018号-1