文章目录
- **PM2 完全指南:Node.js 应用后台启动、关闭与重启详解**
- **1. 什么是 PM2?**
- **2. 安装 PM2**
- **全局安装**
- **验证安装**
- **3. 使用 PM2 启动 Node.js 应用**
- **基本启动**
- **指定应用名称**
- **集群模式(多进程负载均衡)**
- **监听文件变化自动重启(开发模式)**
- **4. 查看运行中的应用**
- **列出所有应用**
- **查看应用详情**
- **5. 关闭/停止 Node.js 应用**
- **停止单个应用**
- **停止所有应用**
- **删除应用(从 PM2 列表移除)**
- **6. 重启 Node.js 应用**
- **普通重启**
- **零停机重启(优雅重载)**
- **重启所有应用**
- **7. 日志管理**
- **查看实时日志**
- **查看最近 100 行日志**
- **清空日志**
- **8. 监控应用性能**
- **实时监控 CPU/内存**
- **生成性能报告**
- **9. 开机自启动**
- **保存当前 PM2 应用列表**
- **设置开机自启动**
- **取消开机自启动**
- **10. 高级用法**
- **环境变量管理**
- **最大内存限制**
- **11. 常见问题**
- **Q1: PM2 启动后应用仍然退出?**
- **Q2: 如何更新 PM2?**
- **Q3: PM2 占用 CPU 过高怎么办?**
- **12. 总结**
PM2 完全指南:Node.js 应用后台启动、关闭与重启详解
1. 什么是 PM2?
PM2 是 Node.js 最流行的进程管理工具之一,它可以帮助开发者:
- 后台运行 Node.js 应用(即使关闭终端也不会停止)
- 自动重启 崩溃的应用
- 负载均衡(多进程模式)
- 日志管理
- 监控性能(CPU、内存)
- 开机自启动
适用于生产环境部署,极大提升 Node.js 应用的稳定性和可维护性。
2. 安装 PM2
全局安装
管理员cmd窗口运行
npm install pm2 -g
安装windows自启动包
npm install pm2-windows-startup -g
执行命令
pm2-startup install
查看是否安装成功
pm2 -v
如果安装失败(权限问题):
sudo npm install -g pm2 # Linux/macOS
npm install -g pm2 --unsafe-perm # 绕过权限限制
验证安装
pm2 --version
# 输出示例:5.2.2
3. 使用 PM2 启动 Node.js 应用
基本启动
pm2 start app.js
- 默认会在后台运行
- 应用名称默认为
app
(不带.js
)
指定应用名称
pm2 start app.js --name "my-api"
集群模式(多进程负载均衡)
pm2 start app.js -i 4 # 启动 4 个实例(根据 CPU 核心数优化)
监听文件变化自动重启(开发模式)
pm2 start app.js --watch
4. 查看运行中的应用
列出所有应用
pm2 list
# 或
pm2 ls
输出示例:
┌─────┬───────────┬─────────────┬─────────┬─────────┬──────┬───────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │
├─────┼───────────┼─────────────┼─────────┼─────────┼──────┼───────────┤
│ 0 │ my-api │ default │ 1.0.0 │ fork │ 1234 │ 2D │
└─────┴───────────┴─────────────┴─────────┴─────────┴──────┴───────────┘
- id:进程的唯一标识符
- name:应用名称
- pid:进程 ID
- uptime:运行时间
查看应用详情
pm2 show my-api
5. 关闭/停止 Node.js 应用
停止单个应用
pm2 stop my-api
# 或通过 id 停止
pm2 stop 0
停止所有应用
pm2 stop all
删除应用(从 PM2 列表移除)
pm2 delete my-api
# 或
pm2 delete 0
6. 重启 Node.js 应用
普通重启
pm2 restart my-api
零停机重启(优雅重载)
适用于生产环境,避免请求中断:
pm2 reload my-api
重启所有应用
pm2 restart all
7. 日志管理
查看实时日志
pm2 logs my-api
查看最近 100 行日志
pm2 logs --lines 100
清空日志
pm2 flush
8. 监控应用性能
实时监控 CPU/内存
pm2 monit
会打开一个交互式面板,显示各进程的资源占用情况。
生成性能报告
pm2 report
9. 开机自启动
保存当前 PM2 应用列表
pm2 save
设置开机自启动
pm2 startup
然后按照提示执行生成的命令(如 systemd、init.d 等)。
取消开机自启动
pm2 unstartup
10. 高级用法
环境变量管理
pm2 start app.js --env production
并在项目根目录创建 ecosystem.config.js
:
module.exports = {apps: [{name: "my-api",script: "app.js",env: {NODE_ENV: "development",},env_production: {NODE_ENV: "production",}}]
};
然后启动:
pm2 start ecosystem.config.js --env production
最大内存限制
pm2 start app.js --max-memory-restart 512M
当内存超过 512MB 时自动重启。
11. 常见问题
Q1: PM2 启动后应用仍然退出?
可能是代码错误,查看日志:
pm2 logs my-api
Q2: 如何更新 PM2?
npm install -g pm2@latest
pm2 update
Q3: PM2 占用 CPU 过高怎么办?
检查是否有内存泄漏,或限制 CPU:
pm2 start app.js --max-memory-restart 1G
12. 总结
操作 | 命令 |
---|---|
启动应用 | pm2 start app.js --name my-api |
停止应用 | pm2 stop my-api |
重启应用 | pm2 restart my-api |
零停机重载 | pm2 reload my-api |
查看日志 | pm2 logs my-api |
监控性能 | pm2 monit |
开机自启 | pm2 save && pm2 startup |
PM2 是 Node.js 开发者必备的工具,能极大提升应用稳定性,建议熟练掌握! 🚀