我是靠谱客的博主 无心毛巾,最近开发中收集的这篇文章主要介绍node进程管理器神器——PM2(值得收藏),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

PM2作为小邹一直在使用的node进程管理软件,我自己心里是感觉非常方便,它在解决node中间层进程异常方面有着不小的功劳,下面小邹就它的两种使用模式给大伙讲解一下(文章同步自小邹的头条号:沪漂程序员的生活史):

运行模式

  1. fork_mode
  2. 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(值得收藏)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部