zoukankan      html  css  js  c++  java
  • Nodejs学习笔记(十三)—PM2

    简介

      PM2

      pm2是一个内置负载均衡的node.js应用进程管理器(也支持Windows),其它的类似功能也有不少,但是感觉pm2功能更强,更值的推荐

      GitHub地址:https://github.com/Unitech/pm2

      API Docs:http://pm2.keymetrics.io/docs/usage/cluster-mode/

      NPM地址:https://www.npmjs.com/package/pm2 

      使用体会:
     
      1.简单易用、后台运行、快速部署,常用到的命令就几个
     
      2.可轻松集群模式启动
     
      3.可以无宕机重暂应用程序,保持不断连接的情况下轻松重载代码
     
      4.完善的日志
     
      5.自动停止不稳定的进程
     
      6.保活应用程序
     
      ….

    pm2安装

      官方安装说明: http://pm2.keymetrics.io/docs/usage/quick-start/

    npm install pm2 -g

      安装成功如下图

      查看版本

    pm2 -v

      各平台安装方法一致

    操作

      我这里有个express的web项目:pm2sample,端口是11111

    启动

    pm2 start app.js

      成功如下图

      这样就可以通过http://localhost:11111 来访问

    关闭

    pm2 stop 0

      为什么stop后是0? 从上图可以看出进程ID为0,所以通过进程ID可以关闭,然后这种方式不易记,下面我看看其它方式启动和关闭

    其它方式启动/关闭

      启动项目,并命名一个应用程序名

    pm2 start app.js --name test

      启动后结果如下图,你可以看到App name 

      根据App name关闭项目

    pm2 stop test

      可以自行试一下效果,关闭成功!

    从PM2中删除

    pm2 delete test

      当然也可以pm2 delete 进程ID 

    重载和重启

      当应用程序代码有更新,可以用重载来加载新代码,也可以用重启来完成

    pm2 reload test
    pm2 restart test

      reload可以做到0秒宕机加载新的代码,restart则是重新启动,生产环境中多用reload来完成代码更新!

    查看详情  

    pm2 show test

      输出如下图

      通过查看详情就可以看到很多有用信息,包含日志和错误输出的文件路径(感觉日志是用的比较多的)  

    多项目操作

      上面是单项目操作,多项目操作是如何呢?

      启动其它项目也如上面命令,我新启一个项目:pm2sample2(端口为11112)

    cd 项目目录
    pm2 start app.js --name test2

      启动后如下图

      想要对这2个项目进行批量操作(多个也一样),如下(重加载全部/停止全部/重启全部/删除全部)

    pm2 reload all
    pm2 stop all
    pm2 restart all
    pm2 delete all

    集群

      上面从图中可以看出mode是“fork”

      开发环境中多以fork的方式启动,生产环境中多用cluster方式启动

      启动方式

    pm2 start app.js -i 2 --name test

      这表示启动2个并命名为test,在后台以cluster方式运行

      从上图可以看出mode为“cluster”方式,其它操作就可以通过上面用过的方式去启动、关闭、重载、重启、删除

      

    其它操作

      watching

      上面的示例图中可以看一“watching”一项,这个项默认是disabled,可以通过如下命令开启

    pm2 start app.js --name test --watch

      上面的命令中启去吧了test项目并开启了watching,这个用处主要更新代码后,不用重载或重启项目即可以立即让更新的代码起作用

      建议:这个适合在开发时用,可以省不少时间,生产环境下最好不要用

      list

    pm2 list

      可以列出pm2中所有项目

      monit

    pm2 monit

       用monit可以打开实时监视器去查看资源占用情况

      logs

    pm2 logs

      通过上面命令可以实时查看日志输出情况(当然,我更习惯去日志文件里看)

    写在之后

      本篇主要对PM2常用命令进行说明

      PM2还有其它很多其它功能,可以通过上面提供的api链接去查看

      但是基本用上面这些命令就够了,现在项目中就用的PM2,感觉还是不错,用于生产环境完全没问题!

    此系列的源代码可到http://bijian1013.iteye.com/blog/2425085下载。 

    文章来源:https://www.cnblogs.com/zhongweiv/p/pm2.html

  • 相关阅读:
    形象的理解Strong和Weak
    iOS开发中常见的一些异常
    离屏渲染
    如何从海量IP中提取访问最多的10个IP
    XJOI3363 树3/Codeforces 682C Alyona and the Tree(dfs)
    XJOI 3578 排列交换/AtCoder beginner contest 097D equal (并查集)
    XJOI 3605 考完吃糖(DAG图dfs)
    POJ 3660 Cow Contest(传递闭包)
    XJOI 3601 技能(贪心+二分)
    51nod 1421 最大MOD值(高妙的调和级数复杂度)
  • 原文地址:https://www.cnblogs.com/flyingeagle/p/9193140.html
Copyright © 2011-2022 走看看