详解使用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中的非阻塞方法介绍
Jun 05 NodeJs
NodeJS制作爬虫全过程(续)
Dec 22 NodeJs
nodejs个人博客开发第一步 准备工作
Apr 12 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 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
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
CI框架常用方法小结
2016/05/17 PHP
js获取单选按钮的数据
2006/11/27 Javascript
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
python3判断url链接是否为404的方法
2018/08/10 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
python解析xml简单示例
2019/06/21 Python
python flask框架实现重定向功能示例
2019/07/02 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
pandas的resample重采样的使用
2020/04/24 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
一套软件测试笔试题
2014/07/25 面试题
创意活动策划书
2014/01/15 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL