PM2node 进程管理工具,可以利用它来简化很多 node 应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

基础指令

  • 全局安装

    1
    npm install -g pm2
  • 启动

    1
    pm2 start app.js
    • -i --instance: 创建进程实例,可用于负载均衡。
    • -n --name: 指定启动实例的应用名称。
    • -o --output <path>: 输出标准日志路径。
    • -e --error <path>: 输出错误日志路径。
    • --watch: 监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。
    • --ignore-watch: 排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如–ignore-watch=”test node_modules “some scripts””
  • 重新启动

    1
    pm2 restart app.js
  • 查看所有进程信息

    1
    2
    3
    pm2 status
    pm2 list
    pm2 ls
  • 查看某个进程信息

    1
    pm2 describe <NAME | ID>
  • 停止

    1
    2
    pm2 stop all // 关闭所有 pm2 应用
    pm2 stop <NAME | ID> // 关闭指定 pm2 应用
  • 删除

    1
    2
    pm2 delete all // 删除所有 pm2 进程
    pm2 delete <NAME | ID> // 删除指定 pm2 进程

负载均衡

PM2 支持集群和负载均衡,可以帮助将传入的请求分布到应用程序的多个实例,从而提高性能和可靠性。

当使用 PM2 的集群模式时,它将生成多个应用程序实例(工作进程),每个实例处理部分传入的请求。PM2 使用的负载均衡策略是轮询,意味着每个新的传入请求都会分配给下一个可用的工作进程,按照循环顺序。

  • 创建进程

    1
    2
    pm2 start app.js -i max // 创建与计算机上可用的CPU核心数量相同的工作进程
    pm2 start app.js -i 1 // 仅创建1个进程

实时日志

  • 查看日志

    1
    2
    pm2 logs // 查看所有进程日志
    pm2 logs <NAME | ID> // 查看指定应用|进程ID的日志

监控

  • 查看 pm2 运行的进程状态

    1
    pm2 monit

开机自动启动

  • 保存当前进程状态

    1
    pm2 save
  • 执行以下命令,配置开机自动启动。在执行此命令后,将会显示一些说明,根据你的系统提示执行相应的命令:

    1
    pm2 startup

    例如,对于 Ubuntu 系统,你可能会看到如下提示:

    1
    2
    [PM2] You have to run this command as root. Execute the following command:
    sudo su -c "env PATH=$PATH:/usr/bin pm2 startup systemd -u <username> --hp <home-path>"

    请按照提示中的命令执行。

  • 执行生成的命令。此命令会创建一个服务(service)以确保在系统启动时 PM2 也会启动。

    例如,在 Ubuntu 上,可能执行的命令类似于:

    1
    sudo su -c "env PATH=$PATH:/usr/bin pm2 startup systemd -u <username> --hp <home-path>"

    注意:请替换 为你的实际用户名和主目录路径。

    重启系统以应用配置。

    现在,当系统启动时,PM2 将自动启动,并确保你的应用程序也会启动。具体见 PM2 Startup Script