简介

  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

Nodejs学习笔记(十三)—PM2的更多相关文章

  1. Nodejs学习笔记(四)——支持Mongodb

    前言:回顾前面零零碎碎写的三篇挂着Nodejs学习笔记的文章,着实有点名不副实,当然,这篇可能还是要继续走着离主线越走越远的路子,从简短的介绍什么是Nodejs,到如何寻找一个可以调试的Nodejs ...

  2. Nodejs学习笔记(三)——一张图看懂Nodejs建站

    前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...

  3. Nodejs学习笔记(二)——Eclipse中运行调试Nodejs

    前篇<Nodejs学习笔记(一)——初识Nodejs>主要介绍了在搭建node环境过程中遇到的小问题以及搭建Eclipse开发Node环境的前提步骤.本篇主要介绍如何在Eclipse中运行 ...

  4. NodeJS学习笔记之Connect中间件模块(一)

    NodeJS学习笔记之Connect中间件模块(一) http://www.jb51.net/article/60430.htm NodeJS学习笔记之Connect中间件模块(二) http://w ...

  5. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  6. Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

    目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...

  7. java之jvm学习笔记十三(jvm基本结构)

    java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...

  8. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

  9. Nodejs学习笔记(十六)--- Pomelo介绍&入门

    目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...

  10. [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...

随机推荐

  1. Vuejs——(5)v-on

    版权声明:出处http://blog.csdn.net/qq20004604   目录(?)[+]   资料来于官方文档: http://cn.vuejs.org/guide/events.html ...

  2. what is HTTP OPTIONS verb

    The options verb is sent by browser to see if server accept cross origin request or not, this proces ...

  3. Spring Boot 2 实践记录之 Powermock 和 SpringBootTest

    由于要代码中使用了 Date 类生成实时时间,单元测试中需要 Mock Date 的构造方法,以预设其行为,这就要使用到 PowerMock 在 Spring Boot 的测试套件中,需要添加 @Ru ...

  4. C#使用Linq对DataGridView进行模糊查找

    针对DataGridView中已进行过数据绑定,即已向DataGridView中添加了一些数据,可以结合Linq查询,并让匹配查询的行高亮显示,如下图:     具体实现如下:   [csharp] ...

  5. bootstrap-treeview 加载默认选择第一个节点

    configAppTree: function (oArrayData){ $('#appTree').treeview({ color: "#545454", expandIco ...

  6. iis 中https修改主机名方法

    来源地址:  https://www.pianyissl.com/support/page/29

  7. Hello World! 我的程序员入坑之旅!

    先说下本文标题,各行各业都有自己的行规和一些内行人玩的梗什么的,这是我开始写技术博客的第一篇,所以它的标题毫无疑问只能是Hello World! 介绍一下我自己 我算是一个少见的科班出身的开发者了,1 ...

  8. .net core webapi+EF Core

    .net core webapi+EF Core 一.描述: EF Core必须下载.net core2.0版本 Micorsoft.EntityFrameworkCore:EF框架的核心包Micor ...

  9. openvswitch 源码分析 OVS_ACTION_ATTR_HASH action

    1.在ovs_dp_process_packet中查找kernel缓存流表,查到后执行ovs_execute_actions->do_execute_actions,其中有个actions是OV ...

  10. 数组序列化serialize

    1,数据在网络中是以字符串形式传输,这样如果传输的是数组,首先将数组内容拼接成字符串进行发送,接收方拿到字符串,没法将其还原为数组.因此在网络传输的时候,为了保证数据类型的不丢失,先序列化,再发送. ...