引言
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
Scalesappup by 3 workers - pm2 scale app 2
Scalesappup 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