pm2是一个带有负载均衡功能的应用进程管理器,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护等功能。他会确定重启开机之后,能够保证程序也能运行起来。目前还没有操作这部分,没有过多介绍
启动
pm2 start app.j
添加进程/应用监视watch (监视)
pm2 start app2.js --watch
上面图片中watching栏,disabled变为enabled
列出所有进程
pm2 list
结束进程
pm2 stop app
结束所有进程
pm2 stop all
删除进程
pm2 delete app
删除所有进程
pm2 delete all
查看某个进程情况
pm2 describe app
查看所有进程资源消耗情况
pm2 monit
重启进程
pm2 restart app
重启所有进程
pm2 restart all
pm2 restart 会杀死所有进程 从而reload
实现0秒的停机时间重新加载,要重新加载使用如下命令
pm2 reload
pm2 reload process.json
查看进程日志
pm2 logs app
查看所有进程日志
pm2 logs
保存脚本
pm2 save
创建开机启动脚本
pm2 startup systemd
更新pm2
确保正确保存了所有进程:
pm2 save
然后从NPM安装最新的PM2版本:
npm install pm2 -g
最后更新内存中的PM2进程:
pm2 update
pm2配置文件
文件名 test.json 可以通过 pm2 start test.json 快速启动 app中每一项就是一个应用
{
"apps": [
{
"name": "coin1_6",
"cwd": "./",
"script": "coin1_6.js",
"log_date_format": "YYYY-MM-DD HH:mm Z",
"error_file": "/var/log/node-app/node-app.stderr.log",
"out_file": "log/node-app.stdout.log",
"pid_file": "pids/node-geo-api.pid",
"instances": "8",
"min_uptime": "60s",
"max_restarts": 10,
"max_memory_restart": "100M",
"cron_restart": "1 0 * * *",
"watch": true,
"merge_logs": true,
"exec_interpreter": "node",
"exec_mode": "cluster",
"autorestart": false,
"vizion": false
}
]
}
name://应用程序名称
cwd://应用程序所在的目录
script://应用程序的脚本路径
log_date_format:
error_file:// 错误日志路径
out_file:// 普通日志路径
pid_file://自定义应用程序的pid文件
instances://启动的线程数量(线程最大数量一般是由服务器核数决定的)
min_uptime://最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
max_restarts://设置应用程序异常退出重启的次数,默认15次(从0开始计数)
cron_restart://定时启动,解决重启能解决的问题
watch://是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
merge_logs:
exec_interpreter://应用程序的脚本类型,默认是node
exec_mode://应用程序启动模式,默认是fork
autorestart://启用/禁用应用程序崩溃或退出时自动重启
vizion://启用/禁用vizion特性(版本控制)
本人使用的时候:
1.max_memory_restart在cluster状态下小于平均的mem,服务器的cpu会占的很高,
......
详细可查看官网文档:http://pm2.keymetrics.io/docs/usage/quick-start/