NodeJS 在生产环境2:PM2 管理 node 进程
pm2 介绍
Advanced, production process manager for Node.js. A Complete feature set for production environment, built with a worldwide community of developers and enterprises
本来应该是叫 pm 的,但因为 pm 已经被国内某个开发者先占用了,只能加个 2,成了 pm2。
pm2 安装
pm2 是 npm 模块,安装超级方便。
npm install -g pm2
安装完成之后,使用命令检查一下是否安装完整。
➜ pm2 -v
[PM2] Spawning PM2 daemon
[PM2] PM2 Successfully daemonized
0.15.10
pm2 使用
pm2 使用超级简单,主要有 3 个命令:
启动
➜ pm2 start app.js -n myAwesomeApp
[PM2] Starting app.js in fork_mode (1 instance)
[PM2] Done.
┌──────────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├──────────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ myAwesomeApp │ 0 │ fork │ 21922 │ online │ 0 │ 0s │ 20.551 MB │ disabled │
└──────────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
start
表示启动一个 node 进程-n
参数用来给这个进程命名
启动之后,显示了一个表格:
- App name:就是
-n
命名的名称 - id:就是分配的 id 序号
- mode:启动模式,默认是 fork,也可以是 cluster
- pid:进程的 pid
- status:当前进程的状态,如果进程崩溃到无法启动,那么值就是 offline
- restart:重启次数
- uptime:启动之后的在线时间
重启
➜ pm2 restart 0
[PM2] restartProcessId process id 0
┌──────────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├──────────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ myAwesomeApp │ 0 │ fork │ 21942 │ online │ 1 │ 0s │ 16.980 MB │ disabled │
└──────────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
restart
表示重启某个 node 进程0
表示 pm2 分配给 node 进程的 ID
重启之后,restart 次数会加 1。当然了,如果你的 node 进程异常崩溃了,那么 pm2 也会自动重启该进程,restart 次数也会加 1。
停止
➜ pm2 stop 0
[PM2] Stopping 0
[PM2] stopProcessId process id 0
┌──────────────┬────┬──────┬─────┬─────────┬─────────┬────────┬────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├──────────────┼────┼──────┼─────┼─────────┼─────────┼────────┼────────┼──────────┤
│ myAwesomeApp │ 0 │ fork │ 0 │ stopped │ 1 │ 0 │ 0 B │ disabled │
└──────────────┴────┴──────┴─────┴─────────┴─────────┴────────┴────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
stop
表示停止某个 node 进程0
表示 pm2 分配给 node 进程的 ID
</>