详解使用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关于gzip/deflate压缩详解
Mar 04 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 NodeJs
nodejs入门教程六:express模块用法示例
Apr 24 NodeJs
nodejs集成sqlite使用示例
Jun 05 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
Nodejs监听日志文件的变化的过程解析
Aug 04 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 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
isset和empty的区别
2007/01/15 PHP
调整PHP的性能
2013/10/30 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
Git命令之分支详解
2021/03/02 PHP
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
vue如何获取点击事件源的方法
2017/08/10 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
在vue项目中使用sass语法问题
2019/07/18 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
计算机软件个人的自荐信范文
2013/12/01 职场文书
财务经理的岗位职责
2013/12/17 职场文书
企业挂职心得体会
2014/09/10 职场文书
2014年林业工作总结
2014/12/05 职场文书
网络研修随笔感言
2015/11/18 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
Python实现批量自动整理文件
2022/03/16 Python