Skip to content

PM2

PM2 是一个流行的进程管理工具,特别用于 Node.js 应用的生产环境部署。它提供了进程管理、日志管理、集群模式等功能。

安装 PM2

首先需要安装 PM2,使用 npm 进行全局安装:

bash
npm install pm2 -g

启动应用

启动一个 Node.js 应用:

bash
pm2 start app.js

可以传入一些额外的参数来配置启动行为:

bash
pm2 start app.js --name "my-app" --watch
  • --name 指定应用的名称
  • --watch 监听文件变化,自动重启应用

启动多个实例(集群模式)

可以使用 -i 来启动应用的多个实例(开启集群模式),-i 0 会自动根据 CPU 核数来启动实例:

bash
pm2 start app.js -i 0

查看进程状态

查看所有由 PM2 管理的进程状态:

bash
pm2 list

或者:

bash
pm2 status

停止、重启应用

停止或重启特定的应用:

bash
pm2 stop my-app
pm2 restart my-app

停止所有应用:

bash
pm2 stop all

删除应用

删除一个应用的进程:

bash
pm2 delete my-app

删除所有应用:

bash
pm2 delete all

日志管理

查看应用的日志输出:

bash
pm2 logs

查看某个应用的日志:

bash
pm2 logs my-app

保存进程列表

保存当前进程列表,以便在服务器重启时自动恢复:

bash
pm2 save

自动启动 PM2(系统重启后)

可以通过 PM2 的启动脚本来配置服务器重启后自动启动应用:

bash
pm2 startup

该命令会输出一条命令,执行它来配置自动启动。

监控应用

PM2 提供了实时的监控面板来查看应用的资源占用、运行状态等:

bash
pm2 monit

配置文件(ecosystem.config.js

使用 PM2 配置文件,可以方便地管理多个应用的配置。一个典型的配置文件如下:

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

启动配置文件中的应用:

bash
pm2 start ecosystem.config.js

监控和性能分析

PM2 提供了内置的 pm2 monit 命令来进行进程监控,可以实时查看进程的 CPU 和内存占用情况。

还可以使用 PM2 提供的 pm2-gui 来通过图形化界面进行管理:

bash
pm2-gui

其他常用命令

  • pm2 info <app_name> 查看某个应用的详细信息
  • pm2 restart <app_name> --only <specific_instance> 重启某个特定实例
  • pm2 update 更新 PM2

配置环境变量

你可以在启动时指定环境变量:

bash
pm2 start app.js --env NODE_ENV=production

或者在配置文件 ecosystem.config.js 中设置不同的环境配置。

常见问题解决

  1. PM2 守护进程启动失败:

    • 确保已安装 pm2node.js
    • 使用 pm2 startup 设置系统自启动。
  2. 应用停止或崩溃:

    • 使用 pm2 logs 查看日志,调试错误。
    • 确保应用的代码没有未处理的异常。

参考

基于 MIT 许可发布