详解使用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的require模块(文件模块/核心模块)及路径介绍
Jan 14 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
Nodejs学习item【入门手上】
May 05 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
图解NodeJS实现登录注册功能
Sep 16 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 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
我的论坛源代码(一)
2006/10/09 PHP
PHP文件上传实例详解!!!
2007/01/02 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP文件与目录操作示例
2016/12/24 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
PHP反射实际应用示例
2019/04/03 PHP
js 模拟气泡屏保效果代码
2010/07/10 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
微信小程序的生命周期的详解
2017/10/19 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
美国时尚假发购物网站:Wigsbuy
2019/04/06 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
电子商务专业个人的自我评价
2013/12/19 职场文书
小学生手册家长评语
2014/04/16 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python