PM2简介

PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

 

安装PM2

$ npm install pm2 -g

 

启动Node应用

# 启动app.js应用程序

$ pm2 start app.js

 

# cluster mode 模式启动4个app.js的应用实例, 4个应用程序会自动进行负载均衡

$ pm2 start app.js -i 4

 

# 启动应用程序并命名为 "api"

$ pm2 start app.js --name="api"

 

# 当文件变化时自动重启应用

$ pm2 start app.js --watch

 

# 启动 bash 脚本

$ pm2 start script.sh

 

查看Node应用

# 列表 PM2 启动的所有的应用程序

$ pm2 list

 

# 显示每个应用程序的CPU和内存占用情况

$ pm2 monit

 

# 显示应用程序的所有信息

$ pm2 show [app-name]

 

# 显示所有应用程序的日志

$ pm2 logs

 

# 显示指定应用程序的日志

$ pm2 logs [app-name]

 

停止/重启Node应用

# 停止所有的应用程序

$ pm2 stop all

 

# 停止 id为 0的指定应用程序

$ pm2 stop 0

 

# 重启所有应用

$ pm2 restart all     

 

# 重启 cluster mode下的所有应用

$ pm2 reload all

 

# Graceful reload all apps in cluster mode

$ pm2 gracefulReload all

 

# 关闭并删除所有应用

$ pm2 delete all

 

# 删除指定应用 id 0

$ pm2 delete 0

 

# 把名字叫api的应用扩展到10个实例

$ pm2 scale api 10

 

# 重置重启数量

$ pm2 reset [app-name]

 

使用启动配置文件

#启动配置文件

$ pm2 start apps.json

范例文件:

{

"apps": [{

"name": "bob_test",

"cwd": "D:\\Practices\\Node\\PM2Demo",

"script": "app.js",

"log_date_format": "YYYY-MM-DD HH:mm Z",

"error_file": "node-app.stderr.log",

"out_file": "node-app.stdout.log",

"pid_file": "node-geo-api.pid",

"instances": 6,

"min_uptime": "200s",

"max_restarts": 10,

"max_memory_restart": "1M",

"cron_restart": "1 0 * * *",

"watch": false,

"merge_logs": true,

"exec_interpreter": "node",

"exec_mode": "fork",

"autorestart": false,

"vizion": false

}]

}

说明:

  • apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用
  • name:应用程序名称
  • cwd:应用程序所在的目录
  • script:应用程序的脚本路径
  • log_date_format:
  • error_file:自定义应用程序的错误日志文件
  • out_file:自定义应用程序日志文件
  • pid_file:自定义应用程序的pid文件
  • instances:
  • min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
  • max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)
  • cron_restart:定时启动,解决重启能解决的问题
  • watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
  • merge_logs:
  • exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs
  • exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
  • autorestart:启用/禁用应用程序崩溃或退出时自动重启
  • vizion:启用/禁用vizion特性(版本控制)

使用PM2守护Node.js应用的更多相关文章

  1. 使用PM2将Node.js的集群变得更加容易

    介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...

  2. 使用PM2管理Node.js集群

    介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...

  3. 使用 PM2 将 Node.js 的集群变得更加容易

    介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...

  4. 使用pm2管理node.js应用

    中文文档:https://pm2.io/doc/zh/runtime/quick-start/ pm2是从nodejs衍生出来的服务器进程管理工具,可以做到开机就启动nodejs.当然了,有些运维同学 ...

  5. 阿里云部署Node.js项目(CentOS)

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...

  6. VPS 运行 Node.js 的一些经验

    VPS 系统选择 各系统安装难易对比 Ubuntu.Debian 较为简单,CentOS 稍麻烦,32位系统比64位更节省内存 DigitalOcean 甚至推出了 Ubuntu + Node.js ...

  7. node.js WebService异常处理(domain)以及利用domain实现request生命周期的全局变量

    成熟的Web Service技术,例如Fast CGI.J2EE.php,必然会对代码异常有足够的保护,好的Web必然会在出错后给出友好的提示,而不是莫名其妙的等待504超时.而node.js这里比较 ...

  8. node.js cluster模式启用方式

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

  9. 使用 Node.js 实现简单的 Webhook

    距离 Node.js 这个东西出来已经过了好久了,感觉现在的前端如果不会点 Node.js 就有点太落后于时代啦.我接触它是从去年暑假开始的,当时在写一个比较神奇的东西,就顺便接触了一下.虽然网传 n ...

随机推荐

  1. struts2 json返回试验

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/ ...

  2. Add lombok to IntelliJ IDEA

    Lombok study link: https://www.jianshu.com/p/365ea41b3573 Add below dependency code to pom.xml <d ...

  3. 再次总结Linux最常用命令

    cp,,mv,,rm,,rmdir,,mkdir,,more,,touch,,head,,tail,,pwd,, less  按q退出,空格翻页,回车 上下键滚动行 -N  显示行号 -S  行过长时 ...

  4. HDU 3966 Aragorn's Story (简单树链剖分)

    题意:给一棵树,并给定各个点权的值,然后有3种操作: I C1 C2 K: 把C1与C2的路径上的所有点权值加上K D C1 C2 K:把C1与C2的路径上的所有点权值减去K Q C:查询节点编号为C ...

  5. idea中,使用facets添加完web后,项目已变为web项目,但web.xml中内容经常变为红色,并报错,如何解决?

    这中错误经常是由于配置facets并添加完web后,没有进一步配置web.xml文件,导致web.xml是使用系统默认的. 如图:需要进一步配置web.xml文件,使用我们src/main/webap ...

  6. redis系列:通过共同好友案例学习set命令

    前言 这一篇文章将讲述Redis中的set类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了. 项目Github地址:https://github.com/rainbowda/learnW ...

  7. zoj3195(lca / RMQ在线)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3195 题意: 给出一棵 n 个节点的带边权的树, 有 q 组形 ...

  8. 2017-10-1 清北刷题冲刺班p.m

    一道图论好题 (graph) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图 ...

  9. 接水果(fruit)——整体二分+扫描线

    题目 [题目描述] 风见幽香非常喜欢玩一个叫做 osu! 的游戏,其中她最喜欢玩的模式就是接水果.由于她已经 DT FC 了 The big black,她觉得这个游戏太简单了,于是发明了一个更加难的 ...

  10. docker默认存储空间用完情况下,做迁移数据

    由于docker默认存放数据路径为/var/lib/docker,但运行了一段时间后,发现/var/lib/docker下的目录文件过大,导致此分区空间不够用.通过以下方法,解决该问题. 如何避免: ...