使用PM2守护Node.js应用
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应用的更多相关文章
- 使用PM2将Node.js的集群变得更加容易
介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...
- 使用PM2管理Node.js集群
介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...
- 使用 PM2 将 Node.js 的集群变得更加容易
介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...
- 使用pm2管理node.js应用
中文文档:https://pm2.io/doc/zh/runtime/quick-start/ pm2是从nodejs衍生出来的服务器进程管理工具,可以做到开机就启动nodejs.当然了,有些运维同学 ...
- 阿里云部署Node.js项目(CentOS)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
- VPS 运行 Node.js 的一些经验
VPS 系统选择 各系统安装难易对比 Ubuntu.Debian 较为简单,CentOS 稍麻烦,32位系统比64位更节省内存 DigitalOcean 甚至推出了 Ubuntu + Node.js ...
- node.js WebService异常处理(domain)以及利用domain实现request生命周期的全局变量
成熟的Web Service技术,例如Fast CGI.J2EE.php,必然会对代码异常有足够的保护,好的Web必然会在出错后给出友好的提示,而不是莫名其妙的等待504超时.而node.js这里比较 ...
- node.js cluster模式启用方式
众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心处理器 ...
- 使用 Node.js 实现简单的 Webhook
距离 Node.js 这个东西出来已经过了好久了,感觉现在的前端如果不会点 Node.js 就有点太落后于时代啦.我接触它是从去年暑假开始的,当时在写一个比较神奇的东西,就顺便接触了一下.虽然网传 n ...
随机推荐
- struts2 json返回试验
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/ ...
- Add lombok to IntelliJ IDEA
Lombok study link: https://www.jianshu.com/p/365ea41b3573 Add below dependency code to pom.xml <d ...
- 再次总结Linux最常用命令
cp,,mv,,rm,,rmdir,,mkdir,,more,,touch,,head,,tail,,pwd,, less 按q退出,空格翻页,回车 上下键滚动行 -N 显示行号 -S 行过长时 ...
- HDU 3966 Aragorn's Story (简单树链剖分)
题意:给一棵树,并给定各个点权的值,然后有3种操作: I C1 C2 K: 把C1与C2的路径上的所有点权值加上K D C1 C2 K:把C1与C2的路径上的所有点权值减去K Q C:查询节点编号为C ...
- idea中,使用facets添加完web后,项目已变为web项目,但web.xml中内容经常变为红色,并报错,如何解决?
这中错误经常是由于配置facets并添加完web后,没有进一步配置web.xml文件,导致web.xml是使用系统默认的. 如图:需要进一步配置web.xml文件,使用我们src/main/webap ...
- redis系列:通过共同好友案例学习set命令
前言 这一篇文章将讲述Redis中的set类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了. 项目Github地址:https://github.com/rainbowda/learnW ...
- zoj3195(lca / RMQ在线)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3195 题意: 给出一棵 n 个节点的带边权的树, 有 q 组形 ...
- 2017-10-1 清北刷题冲刺班p.m
一道图论好题 (graph) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图 ...
- 接水果(fruit)——整体二分+扫描线
题目 [题目描述] 风见幽香非常喜欢玩一个叫做 osu! 的游戏,其中她最喜欢玩的模式就是接水果.由于她已经 DT FC 了 The big black,她觉得这个游戏太简单了,于是发明了一个更加难的 ...
- docker默认存储空间用完情况下,做迁移数据
由于docker默认存放数据路径为/var/lib/docker,但运行了一段时间后,发现/var/lib/docker下的目录文件过大,导致此分区空间不够用.通过以下方法,解决该问题. 如何避免: ...