PM2是具有内置负载平衡器的Node.js应用程序的生产进程管理器。它可以使应用程序永远保持活动状态,可以在不停机的情况下重新加载它们,并简化常见的系统管理任务。当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的。

PM2官方网站:https://pm2.keymetrics.io/
PM2的NPM地址: https://www.npmjs.com/package/pm2
PM2的github地址: https://github.com/Unitech/pm2

一. 安装pm2

npm install pm2 -g

二. 启动koa2项目

pm2 start ./bin/www --name="www"

这种方法启动的项目没有监听自动重启的功能, 如果需要自动重启, 需执行以下启动命令

三. 启动koa2项目(带监听)

监听状态下, 项目遇到问题会自动重启, 比较适合生产环境

pm2 start ./bin/www --name="www" --watch

四. 停止某个项目

pm2 stop www
pm2 stop all #停止所有

五. 重启某个项目

pm2 restart www
pm2 restart www --watch
pm2 restart all
pm2 restart all --watch
pm2 reload all   #0秒停机重载进程 (用于 NETWORKED 进程)

六. 删除某个项目

pm2 delete app
pm2 delete all #删除所有

七. 当前项目清单

pm2 list

八. 其他pm2命令

1. 监视所有进程

pm2 monit
pm2 monit www   //查询某个项目

2. 显示所有进程日志

pm2 logs
pm2 logs www   //查询某个项目

3. 显示某个项目的详情

pm2 show www

九. 多进程

运行进程的不同方式:

$ 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  # 启动 并 生成一个配置文件
你也可以执行用其他语言编写的app  ( fork 模式):
$ pm2 start my-bash-script.sh    -x --interpreter bash
$ pm2 start my-python-script.py -x --interpreter python

关于多进程, 请参考如下文章:https://www.cnblogs.com/xingchong/p/13183162.html

十. pm2 启动模式 fork 和 cluster 的区别

fork模式,单实例多进程,常用于多语言混编,比如php、python等,不支持端口复用,需要自己做应用的端口分配和负载均衡的子进程业务代码。
缺点就是单服务器实例容易由于异常会导致服务器实例崩溃。

cluster模式,多实例多进程,但是只支持node,端口可以复用,不需要额外的端口配置,0代码实现负载均衡。
优点就是由于多实例机制,可以保证服务器的容错性,就算出现异常也不会使多个服务器实例同时崩溃。

共同点,由于都是多进程,都需要消息机制或数据持久化来实现数据共享。


http://www.taodudu.cc/news/show-6903838.html

相关文章:

  • 搭建和部署nuxt项目
  • linux安装node、npm、pm2管理多个node项目同时运行
  • 一般纳税人给小规模纳税人一般都是开普通发票
  • 小规模纳税人和一般纳税人的区别?税率有何不同
  • 一般纳税人与小规模纳税人是对增值税纳税人区别
  • [冠军杯]巴塞罗那 2:1 AC米兰
  • 米兰·昆德拉简介
  • PELAGO佩拉戈 | 初见
  • 。。。。AC米兰夺冠
  • 《NFL橄榄球》:印第安纳波利斯小马·橄榄1号位
  • 米兰德比,AC失意梅阿查
  • 《NFL橄榄球》:克利夫兰布朗·橄榄1号位
  • 米兰的衰落
  • 国际米兰夺冠!
  • 米兰.昆德拉
  • 伟大的AC米兰!
  • 米兰
  • 灵活用工平台有哪些?从事灵活用工岗位靠谱吗?
  • 电商平台1688代购一般需要几个平台API接口呢?
  • Java蓝桥饮料代购
  • ChatGPT的接口在哪
  • 为啥要做接口测试?接口测试用例怎么写?哪些工具可以用?
  • php接口很慢如何排查,记一次接口突然响应很慢的排查经历
  • 【免费开源】2020年独家全球疫情大数据接口(实时获取)
  • 免费api接口二
  • 《基于历史拥堵图和共识日识别的交通拥堵和出行时间预测》
  • 师兄毕业论文 -- 交通轨迹数据发布差分隐私保护算法研究(2020)
  • 《整体决策的统一框架和基于时空的高速路自动驾驶轨迹规划》论文分析
  • 美国2003-2015年道路交通事故数据及毕业论文
  • 交通数据综合分析实验

pm2管理koa2项目相关推荐

  1. 在Centos上启动nodejs项目,并使用pm2管理nodejs应用

    node+koa2+mysql入门可以查看这篇文章https://blog.csdn.net/qq_41231694/article/details/123788781 一.在centos上安装nod ...

  2. 【VUE项目实战】68、使用pm2管理项目

    接上篇<67.上线-开启gzip和配置HTTPS服务> 上一篇我们学习了如何开启gzip配置来减少文件访问体积,并配置HTTPS服务.本篇我们讲解一下如何使用pm2管理项目. 本篇是该系列 ...

  3. 【项目问题】PM2管理器运行报错: Error: bind EADDRINUSE null:8360(阿里云服务器)

    本人后端是使用thinkjs项目创建的,npm run compile 编译后上传到服务器,发现报错:Error: bind EADDRINUSE null:8360 第一步:查看运行日志,报错原因是 ...

  4. linux安装node、npm、pm2管理多个node项目同时运行

    一.安装node yum install epel-release yum install nodejs node --version 二.安装npm yum install npm npm --ve ...

  5. nuxt项目发布服务器步骤(使用pm2管理)

    注:如果服务器已经安装了node可以直接进行步骤3,如果没有安装从步骤1开始,步骤2可用可不用,推荐使用方便管理node版本. 安装node(这个地方最好是安装和你本地的node版本一致) 遇坑:我默 ...

  6. 基于Node的Koa2项目从创建到打包到云服务器指南

    一 创建koa2项目 二 放到云服务器 一 创建koa2项目 为了节省开发成本,本文采用koa-generator脚手架来创建koa2项目 首先npm安装脚手架 $ npm install -g ko ...

  7. PM2 自动化部署项目 之 (Vue SSR)

    背景 常规部署项目比较传统的方式通过上传工具直接上传文件替换服务器文件, 也可以通过Xftp 方式来更新/发布指定站点.随着项目复杂度的增强,开发技术等手段增多.一些部署方式显得有点力不从心,且操作过 ...

  8. PM2 部署 nodejs 项目

    PM2 部署 nodejs 项目 在网上找到pm2.目前似乎最常见的线上部署nodejs项目的有forever,pm2这两种. 使用场合: forever管理多个站点,每个站点访问量不大,不需要监控. ...

  9. 使用pm2管理node服务

    最近在做项目的时候有个需求,需要将nodeJS写的接口部署到服务器上,并且要求服务器重启后该node进程也会自动启动,我在搜索相关资料后选择了使用pm2进程管理工具. pm2管理工具相关优势: (1) ...

最新文章

  1. linux 内核编译错误 undefined reference to '__mutex_lock_slowpath'
  2. 鸿蒙系统2019发布会,直击丨2019华为开发者大会 “鸿蒙”系统今日正式发布!...
  3. Hadoop服务器集群安装部署及配置
  4. 用C语言编写的简历,一份用C语言写的简历
  5. 16位的数字高字节和低字节_显示8位数字的较低和较高半字节的掩蔽| 8086微处理器...
  6. TokenInsight:反映区块链行业整体表现的 TI 指数较昨日同期下跌1.03%
  7. hihocoder第212周-动态规划
  8. GitHub Actions 持续集成
  9. unix和linux命令_Linux / UNIX中的cp命令
  10. Ehlib 单元格 图像绘制 代码
  11. 快来,这里不仅有帅哥,还有美女!!
  12. PYTHON之计算机语言基础知识 —— 字符编码
  13. 人工智能产生式系统动物识别实验python
  14. 西餐菜单怎么翻译成英文
  15. 银河麒麟V10安装ASP.NET Core教程
  16. 【微信小程序】接口生成自定义首页二维码
  17. ZBrush笔刷属性栏简介
  18. 解决vim与外界的复制粘贴(不用安装插件)
  19. 数字孪生技术实现和案例
  20. chapter请求和响应

热门文章

  1. 从根源上看屏幕点击事件是如何传递到View中的(上)-事件获取
  2. 如何关闭OPPO手机服务器维护,opporeno4如何关闭天气预警功能 oppo手机天气预警功能一键关闭关闭方法分享...
  3. BeetlSql简介及举例
  4. el-table合并表头handerMethod
  5. office转pdf 文件路径 php,php如何将office文件转pdf文件
  6. html中表单元素中的单选框,Html表单元素及表单元素详解
  7. JAVA毕业设计高校图书馆管理网站计算机源码+lw文档+系统+调试部署+数据库
  8. vaadin之UI组件
  9. SynFace Face: Recognition with Synthetic Data 阅读笔记
  10. ios模拟器各种路径