主要特性
1、内建负载均衡(使用Node Cluster集群)
2、后台运行
3、0秒停机重载
4、停止不稳定进程(避免无限循环)
5、远程控制和实时的接口API(Node模块允许和PM2的进程管理进行交互)
安装
npm install -g pm2
启动
- 可直接启动入口文件,如下:
pm2 start app.js
- 也可以启动配置文件,如下
//process.config.js
module.exports = {
apps : [{
name: "app",
script: "./app.js",
log:"./logs",
watch:true,//监听文件变化,自动重启,
// instances:4,//设置多进程
error_file:"./logs/err.log",
out_file:"./logs/info.log",
log_date_format:"YYYY-MM-DD HH:mm:ss",//给每行日志标记一个时间
ignore_watch:[//不需要监听的文件
"node_modules",
"logs"
],
env: {
NODE_ENV: "development",
},
env_test: {
NODE_ENV: "test",
},
env_stage: {
NODE_ENV: "stage",
},
env_production: {
NODE_ENV: "production",
}
}]
}
启动成功如下图:
配置自动说明
- apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用
- 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:应用程序的脚本类型,这里使用的shell,默认是nodejs
- exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
- autorestart:启用/禁用应用程序崩溃或退出时自动重启
- vizion:启用/禁用vizion特性(版本控制)
其他命令
- 重启:pm2 restart app.js / pm2 restart all / pm2 restart 进程号
- 停止:pm2 stop app.j / pm2 stop all / pm2 stop 进程号
- 杀死进程: pm2 delete 进程号/pm2 delete all
- 列出所有进程:pm2 list
- 查看日志:pm2 logs
- 重启所有进程: pm2 restart all
- 0秒停机重载进程: pm2 reload all
运行进程 其他指令:
- pm2 start app.js -i max 根据有效CPU数目启动最大进程数目
- pm2 start app.js -i 3 启动3个进程
- pm2 start app.js -x 用fork模式启动 app.js 而不是使用 cluster
- pm2 start app.js -x -- -a 23 用fork模式启动 app.js 并且传递参数 (-a 23)
- pm2 start app.js --name serverone 启动一个进程并把它命名为 serverone
- pm2 stop serverone 停止 serverone 进程
- pm2 start app.json 启动进程, 在 app.json里设置选项
- pm2 start app.js -i max -- -a 23 在--之后给 app.js 传递参数
- pm2 start app.js -i max -e err.log -o out.log 启动 并 生成一个配置文件