概述
PM2作为小邹一直在使用的node进程管理软件,我自己心里是感觉非常方便,它在解决node中间层进程异常方面有着不小的功劳,下面小邹就它的两种使用模式给大伙讲解一下(文章同步自小邹的头条号:沪漂程序员的生活史):
运行模式
- fork_mode
- cluster_mode
pm2 start app.js 默认开启的是fork模式,pm2 start app.js -i max 是开启cluster模式(集群模式)。cluster模式的好处,请自行百度。
当然你也可以通过配置文件启动1个或多个node应用
// process.json(也可以yml等配置文件)
{
"apps": [{
"name": "myblog",
"script": "app.js",
"instances": 2, //利用2个核心
"exec_mode": "cluster"
}, {
"name": "myblog-test",
"script": "app.js",
"instances": "max",
"exec_mode": "cluster",
"watch": true,
"env": {
"NODE_ENV": "development"
},
"env_production": {
"NODE_ENV": "production"
},
"interpreter": "/usr/bin/node",
"interpreter_args": "--harmony",
"node_args": "--harmony",
"log_date_format": "YYYY-MM-DD HH:mm Z",
"error_file": "/web/klhut/www/logs/err.log",
"out_file": "/web/klhut/www/logs/out.log",
"pid_file": "/web/klhut/www/logs/app-id.pid"
}]
}
// 启动应用
pm2 start process.json
//指定对应的运行环境
pm2 start process.json --env production
你可以在package.json里写了几个命令
"scripts": {
"start": "shell=(nvm use 7 ) && pm2 start ./process.json",
"restart": "pm2 restart ./process.json",
"stop": "pm2 stop ./process.json",
"delete": "npm run stop && pm2 delete ./process.json"
}
pm2还可以设置开机自启动
$ pm2 save
$ pm2
startup centos
//具体看文档
下面小邹讲讲cluster_mode的优势
1、重启异常进程
如果任意一个工作线程挂掉了,不用担心,PM2会立即将其重启。当然,你也完全可以在任何时候手动重启这些线程:
2、实时扩展集群
任何时候,如果你需要增加工作线程的数量,可以通过pm2 scale <app name> <n>来对集群进行扩展。参数<n>指定工作线程的数量,被用来增加或减少集群数。你也可以通过pm2 scale app +3的方式来指定要增加多少工作线程。
3、在产品环境实现零停机更新
PM2的reload <app name>功能将依次重启所有的工作线程。每一个线程会等待在新的线程创建之后才会被终止掉,因此,当你在产品环境部署新的代码时,server会不间断地一直保持运行。
使用gracefulReload功能可以达到相同的目的,不同的是它不会立即终止工作线程,而是通过IPC发送一个shutdown信号来关闭所有当前的连接并处理一些自定义的任务,然后再优雅地退出。如下面的代码:
process.on('message', function(msg) {
if (msg === 'shutdown') {
close_all_connections();
delete_cache();
server.close();
process.exit(0);
}
});
最后
以上就是无心毛巾为你收集整理的node进程管理器神器——PM2(值得收藏)的全部内容,希望文章能够帮你解决node进程管理器神器——PM2(值得收藏)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复