PM2 使用详细介绍

以下是基于知识库信息整理的 PM2 使用详细介绍,涵盖安装、基础操作、高级功能、配置管理及最佳实践等内容:



一、PM2 简介

PM2 是一个用于 Node.js 应用的进程管理器,支持进程守护、负载均衡、日志管理、自动重启等功能,适用于开发和生产环境。它不仅支持 Node.js,还可管理其他语言(如 Python、Java)的进程。


二、安装 PM2

1. 安装 Node.js

PM2 需要 Node.js 环境,可通过以下方式安装:

1
2
3
4
5
# 使用 NVM 安装(推荐)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # 将此行添加到 ~/.bashrc
nvm install node # 安装最新版 Node.js

2. 安装 PM2

1
2
3
npm install pm2@latest -g  # 全局安装 PM2
# 或使用 Yarn
yarn global add pm2

验证安装:

1
pm2 -v  # 查看版本号(如:5.4.0)

三、基础命令

1. 启动应用

1
2
3
pm2 start app.js  # 启动 Node.js 应用(默认名称为 app)
pm2 start server.py --name my-python-app # 启动 Python 应用并指定名称
pm2 start bash_script.sh --interpreter sh # 启动 Shell 脚本

2. 参数说明

  • –name :指定应用名称。
  • –watch:文件变动时自动重启。
  • –no-daemon:在前台运行(非守护进程)。
  • –log :指定日志路径。
  • –max-memory-restart :内存超过指定值时重启(如–max-memory-restart 200M)。
  • –cron ““:按计划重启(如–cron “0 2 * * *” 每天凌晨2点重启)。

3. 管理进程

1
2
3
4
5
pm2 list  # 查看所有进程状态
pm2 restart app_name # 重启应用
pm2 stop app_name # 停止应用
pm2 delete app_name # 彻底删除应用
pm2 delete all # 删除所有进程

4. 查看日志

1
2
pm2 logs  # 实时查看所有进程日志
pm2 logs app_name --lines 100 # 查看某应用最近100行日志

5. 监控状态

1
2
pm2 monit  # 实时监控 CPU/内存/请求等指标(交互式界面)
pm2 show app_name # 查看单个进程的详细信息

四、高级功能

1. 负载均衡(集群模式)

通过多进程提升性能:

1
2
pm2 start app.js -i max  # 根据 CPU 核心数启动集群
pm2 start app.js -i 4 # 指定启动4个进程

2. 生态系统配置文件(ecosystem.config.js)

统一管理多应用配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module.exports = {
apps : [{
name: "my-api",
script: "app.js",
instances: "max", // 自动分配进程数
autorestart: true,
watch: ["src/"],
env: {
NODE_ENV: "development"
},
env_production: {
NODE_ENV: "production"
}
}]
};

启动配置文件:

1
pm2 start ecosystem.config.js

3. 环境变量管理

1
2
3
pm2 start app.js --env production  # 设置环境变量
pm2 startup # 生成开机自启脚本(如:pm2 startup systemd)
pm2 save # 保存当前进程列表,开机自启

4. 部署与更新

1
2
3
pm2 update  # 更新 PM2 本身
pm2 reload app_name # 平滑重启(零停机时间)
pm2 scale app_name +2 # 扩容进程数(如从2个增加到4个)

五、常见场景与最佳实践

1. 结合 Nginx 反向代理

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装 Nginx 并配置反向代理到 PM2 集群
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000; # 指向 PM2 应用端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

2. 日志轮转与清理

1
2
3
pm2 flush  # 清空当前日志
pm2 describe app_name | grep pm2-log-path # 查看日志路径
# 配置日志轮转(如使用 logrotate 工具)

3. 安全与监控

1
2
3
4
pm2 describe app_name  # 查看进程详细信息(包括 PID、内存占用等)
pm2 logs --json # 以 JSON 格式输出日志
# 使用 PM2 Plus(付费)获取 Web 管控面板:
pm2 link # 绑定到 pm2.io 监控服务

六、常见问题

1. 进程无法启动

  • 检查日志:pm2 logs app_name
  • 验证权限:确保脚本可执行(chmod +x script.sh)。

2. 内存泄漏或崩溃

  • 设置内存阈值:pm2 start app.js –max-memory-restart 200M
  • 启用自动重启:pm2 restart app_name –update-env

3. 集群模式下会话共享

  • 使用 Redis 或 Memcached 存储会话数据:

    1
    pm2 start app.js -i max -- -s redis://localhost:6379

七、PM2 生态系统工具

1. PM2 Plus

  • 提供商业级监控、告警、跨服务器管理等功能。
  • 访问pm2.io获取更多信息。

2. PM2 插件

  • 安装插件扩展功能:

    1
    pm2 install pm2-logrotate  # 日志轮转插件

八、总结

PM2 是一个功能强大的进程管理工具,适用于 Node.js 及其他语言的长期运行应用。通过进程守护、负载均衡、日志管理等特性,可显著提升应用的稳定性和性能。结合 Nginx、环境变量配置和监控工具,能构建完整的生产环境部署方案。