位置: 编程技术 - 正文

详解如何使用PM2将Node.js的集群变得更加容易(pm2使用手册)

编辑:rootadmin

推荐整理分享详解如何使用PM2将Node.js的集群变得更加容易(pm2使用手册),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:pm2 config,详解如何使用pcem安装windows 98,pm2指令,pm2使用手册,pm2使用手册,详解如何使用pcem安装windows 98,pm2使用手册,详解如何使用pcem安装windows 98 csdn,内容如对您有帮助,希望把文章链接给更多的朋友!

介绍

众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎。不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心处理器的系统中并不能发挥其最大的性能。

Node.js的cluster模块

幸运的是,Node.js给我们提供了cluster模块,它可以生成多个工作线程来共享同一个TCP连接。

它是如何运作的呢?

首先,Cluster会创建一个master,然后根据你指定的数量复制出多个server app(也被称之为工作线程)。它通过IPC通道与工作线程之间进行通信,并使用内置的负载均衡来更好地处理线程之间的压力,该负载均衡使用了Round-robin算法(也被称之为循环算法)。

当使用Round-robin调度策略时,master accepts()所有传入的连接请求,然后将相应的TCP请求处理发送给选中的工作线程(该方式仍然通过IPC来进行通信)。

那如何来使用呢?

下面是一个最基本的例子:

当然,你可以指定任意数量的工作线程,线程的数量不仅限于CPU核心的数量,因为它只是作为一个运行在CPU上的子线程。

正如你所看到的,要使其正常运行,你需要将你的代码封装到cluster的处理逻辑中,并添加一些额外的代码来指定当一个线程挂掉之后如何进行处理。

使用PM2的方式

内置的cluster

PM2内部包含了所有上述的处理逻辑,因此你不必对代码做任何修改。我们将上面的代码还原成最原始的形式:

然后在控制台执行:

-i <number of workers>参数用来告诉PM2以cluster_mode的形式运行你的app(对应的叫fork_mode),后面的数字表示要启动的工作线程的数量。如果给定的数字为0,PM2则会根据你CPU核心的数量来生成对应的工作线程。

详解如何使用PM2将Node.js的集群变得更加容易(pm2使用手册)

不论什么情况下,保持你的apps一直运行

如果任意一个工作线程挂掉了,不用担心,PM2会立即将其重启。当然,你也完全可以在任何时候手动重启这些线程:

实时扩展集群

任何时候,如果你需要增加工作线程的数量,可以通过pm2 scale <app name> <n>来对集群进行扩展。参数<n>指定工作线程的数量,被用来增加或减少集群数。你也可以通过pm2 scale app +3的方式来指定要增加多少工作线程。

在产品环境实现零停机更新

PM2的reload <app name>功能将依次重启所有的工作线程。每一个线程会等待在新的线程创建之后才会被终止掉,因此,当你在产品环境部署新的代码时,server会不间断地一直保持运行。

使用gracefulReload功能可以达到相同的目的,不同的是它不会立即终止工作线程,而是通过IPC发送一个shutdown信号来关闭所有当前的连接并处理一些自定义的任务,然后再优雅地退出。如下面的代码:

将PM2配置成自动启动

想要PM2在服务器重启后自动运行之前的应用,可以先通过pm2 start启动你的应用,然后执行下面的命令:

这将在~/.pm2目录下生成一个dump.pm2文件,里面描述了当前PM2上运行着的所有应用。然后执行命令:

注意有必要添加可选参数platform以明确告知pm2当前的系统环境。这样,下次当服务器重启时,PM2会自动运行之前保存的应用。

结论

Cluster模块的功能非常强大,使用PM2会使它变得更加容易。在Node 0..x时代cluster.js还只是个试验品,但从Node 0..x开始已经逐渐成熟并开始准备正式发布,当然也包括Node 0..x版本。强烈推荐使用最新版的Node.js和PM2,这些产品的贡献者们一直在努力并使它们变得更好。

尽情享受PM2带给Node.js集群操作的便利吧!

原文地址:

浅谈Node模块系统及其模式 模块是构建应用程序的基础,也使得函数和变量私有化,不直接对外暴露出来,接下来我们就要介绍Node的模块化系统和它最常用的模式为了让Node.js的文

在 Node.js 中使用 async 函数的方法 借助于新版V8引擎,Node.js从7.6开始支持async函数特性。今年月日,Node.js8也开始成为新的长期支持版本,因此你完全可以放心大胆地在你的代码中使用

nodejs async异步常用函数总结(推荐) nodejs框架类库很多,流程控制本来是件比较简单的事,但是对于nodejs的异步架构的实现方法,对于需要同步的业务逻辑,实现起来比较麻烦。async的集合

标签: pm2使用手册

本文链接地址:https://www.jiuchutong.com/biancheng/368559.html 转载请保留说明!

上一篇:详解IWinter 一个路由转控制器的 Nodejs 库

下一篇:浅谈Node模块系统及其模式(node modules干嘛的)

  • 合伙企业如何纳入合并报表
  • 金税四期对企业和个人的影响
  • 小规模计提税金及附加会计分录怎么写
  • 运输公司的车辆保险费计入什么科目
  • 一税两费可以从费用中扣除吗
  • 未使用固定资产计提折旧计入
  • 电子税务局税种认定在哪里看
  • 自然人报税系统怎么进入单位报税系统
  • 篮球俱乐部是非洲的吗
  • 税控盘必须一直插着吗
  • 固定资产盘亏怎么算
  • 企业所得税的税率
  • 企业收回以前注销时的坏账准备余额怎么处理?
  • 增值税发票过期了税金怎么办
  • 营改增后房产土地作价入股该如何做税务处理?
  • 建筑公司运营的流程
  • 未完工的工程款怎么支付
  • 电子增值普通发票经营范围呢免费吗
  • 增值税专用发票电子版
  • 收到专票未抵扣,销售方作废怎么处理
  • 公司食堂买菜入什么科目
  • 平销返利怎么开票入账
  • 集团对子公司投资收益协议
  • 销售方如何开具红字增值税专票 对方未抵扣
  • 应收账款 转让
  • 价内税与价外税名词解释
  • 低值易耗品摊销表格
  • 营改增后的增值税税率
  • 税金及附加怎么登明细账
  • 更改win10通知
  • 银行保证金账务处理流程
  • 命令提示符打错了怎么修改
  • 汽车维修行业会计分录
  • 汽车报废残值收入怎么做账
  • 白鹤芋的养殖方法和注意事项
  • 融资租赁与经营租赁的联系
  • 卡特迈国家公园熊吃人
  • echarts bi
  • 头歌HTML基础第一关初识HTML
  • 应收票据确认坏账怎么处理
  • framework教程
  • 小微企业具体指
  • 延期缴纳税款的问题
  • 其他应付款的账户结构
  • phpsystem函数
  • sqlloader语法
  • discuz管理中心登陆
  • 生产企业免抵退红字冲减
  • 资产负债表固定资产清理
  • 确认预计负债的三个条件
  • 银行存款日记账填写样本图
  • sqlserver2005创建表
  • 一般计税方法预交增值税
  • 不动产登记机构应当履行下列职责?
  • 内资非独立核算的企业
  • 员工欠薪怎么办
  • 低值易耗品怎么摊
  • 调整以前年度所得
  • 公司自建房要交房产税吗
  • 用友u8怎样查询上个月凭证
  • 销售折让的会计账务处理分录
  • 管理费用费用占收入的多少
  • 员工的探亲费应由谁支付
  • 固定资产清理账户借方的核算内容包括
  • 个体工商户个税2023最新政策
  • Windows10下MySQL5.7.19安装教程 MySQL忘记root密码修改方法
  • Vista下WMC不能播放RMVB解决办法
  • mac声音无法调节
  • win7删除通知区域图标
  • mac用ntfs文件夹读写ntfs硬盘
  • 快速解决胃胀气
  • jquery插件怎么用到自己的网站
  • 轻松实现人生理想生日尾数农历
  • jquery prototype
  • 堆实现栈
  • js简单实现图片轮播
  • 产品税务编号查询系统官网
  • 河北国家税务局发票查询系统
  • 江苏网上税务局官网登录
  • 企业所得税汇算清缴账务处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设