详解使用PM2管理nodejs进程


Posted in NodeJs onOctober 24, 2017

pm2 是一个带有负载均衡功能的Node应用的进程管理器.

当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的。

它非常适合IaaS结构,但不要把它用于PaaS方案(随后将开发Paas的解决方案).

和使用node index.js方式比较,优点:

1 一个命令窗口就可管理多个node服务器进程。而node命令多个进程就需要开多个窗口。

2 关闭命令窗口,node进程仍然会运行。而node命令运行的关闭窗口后,进程也就关闭了。

一 安装PM2

npm install -g pm2

详解使用PM2管理nodejs进程

二 用pm2 启动index.js

pm2 start index.js --name tank

--name tank是给这个进程取个名字

详解使用PM2管理nodejs进程

三 其他pm2命令

安装
npm install -g pm2

用法
$ npm install pm2 -g   # 命令行安装 pm2 
$ pm2 start app.js -i 4 #后台运行pm2,启动4个app.js 
                # 也可以把'max' 参数传递给 start
                # 正确的进程数目依赖于Cpu的核心数目
$ pm2 start app.js --name my-api # 命名进程
$ pm2 list        # 显示所有进程状态
$ pm2 monit       # 监视所有进程
$ pm2 logs        # 显示所有进程日志
$ pm2 stop all      # 停止所有进程
$ pm2 restart all    # 重启所有进程
$ pm2 reload all     # 0秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0       # 停止指定的进程
$ pm2 restart 0     # 重启指定的进程
$ pm2 startup      # 产生 init 脚本 保持进程活着
$ pm2 web        # 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0      # 杀死指定的进程
$ pm2 delete all     # 杀死全部进程

运行进程的不同方式:
$ 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

0秒停机重载:
这项功能允许你重新载入代码而不用失去请求连接。
注意:
仅能用于web应用
运行于Node 0.11.x版本
运行于 cluster 模式(默认模式)
$ pm2 reload all

CoffeeScript:
$ pm2 start my_app.coffee #这就是全部

PM2准备好为产品级服务了吗?
只需在你的服务器上测试
$ git clone https://github.com/Unitech/pm2.git
$ cd pm2
$ npm install # 或者 npm install --dev ,如果devDependencies 没有安装
$ npm test

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
NodeJS框架Express的模板视图机制分析
Jul 19 NodeJs
NodeJS的url截取模块url-extract的使用实例
Nov 18 NodeJs
nodejs npm package.json中文文档
Sep 04 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
Nodejs的express使用教程
Nov 23 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
如何利用nodejs自动定时发送邮件提醒(超实用)
Dec 01 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 #NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 #NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 #NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 #NodeJs
Nodejs调用WebService的示例代码
Sep 29 #NodeJs
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
Sep 29 #NodeJs
Nodejs实现文件上传的示例代码
Sep 26 #NodeJs
You might like
sony ICF-2010 拆解与改装
2021/03/02 无线电
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
JavaScript限定图片显示大小的方法
2015/03/11 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
Tornado高并发处理方法实例代码
2018/01/15 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
python for循环remove同一个list过程解析
2019/08/14 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
法定代表人授权委托书
2014/09/19 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
停发工资证明范本
2015/06/12 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang