PM2

1,390 阅读1分钟

引言

PM2 是管理和保持应用在线的守护进程管理器


PM2功能

fork 模式 vs cluster 模式

  • fork 模式
    单实例,可以修改exec_interpreter配置项,使用 pm2 运行 php、python 等其它语言的服务。
    pm2 默认使用 node,pm2 start app.js 等价于 require('child_process').spawn('node', ['server.js'])
  • cluster 模式
    多实例(仅限nodejs进程)零配置实现各个实例之间的负载均衡。

watch 模式

当文件修改后,pm2 自动重启应用。


PM2原理

待完善


常用命令

Fork mode

  • pm2 start app.js --name my-api
    start and name process

Cluster mode

  • pm2 start app.js -i 0|max
    Start maximum processes with LB depending on available CPUs
  • pm2 scale app +3
    Scales app up by 3 workers
  • pm2 scale app 2
    Scales app up or down to 2 workers total

Listing

  • pm2 [list|ls|status]
    List the status of all application managed by PM2
  • pm2 jlist
    Print process list in raw JSON
  • pm2 prettylist
    Print process list in beautified JSON
  • pm2 describe 0
    Display all informations about a specific process
  • pm2 monit
    Terminal Based Dashboard

Logs

  • pm2 logs [--raw]
    Display all processes logs in streaming
  • pm2 logs --lines 200
    Dig in older logs
  • pm2 flush
    Display all processes logs in streaming
  • pm2 reloadLogs
    Reload all logs

Actions

  • pm2 stop all|id
    Stop all processes or specific process id
  • pm2 restart all|id
    Restart all processes or specific process id
  • pm2 reload all|id
    Will 0s downtime reload (for NETWORKED apps)
  • pm2 delete all|id
    Will remove all processes or specific process id from pm2 list

Misc

  • pm2 reset all|id
    Reset meta data (restarted time...)
  • pm2 updatePM2
    Update in memory pm2
  • pm2 ping
    Ensure pm2 daemon has been launched
  • pm2 sendSignal SIGUSR2 my-app
    Send system signal to script
  • pm2 start app.js --no-daemon
  • pm2 start app.js --no-vizion
  • pm2 start app.js --no-autorestart