详解使用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使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
nodejs开发环境配置与使用
Nov 17 NodeJs
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
Jul 26 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
详解nodejs通过响应回写的方式渲染页面资源
Apr 07 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 NodeJs
nodejs环境使用Typeorm连接查询Oracle数据
Dec 05 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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
延长phpmyadmin登录时间的方法
2011/02/06 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
vue实现弹幕功能
2019/10/25 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
Python常用的日期时间处理方法示例
2015/02/08 Python
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
深入浅析python定时杀进程
2016/06/06 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
Python读取指定日期邮件的实例
2019/02/01 Python
python3图片文件批量重命名处理
2019/10/31 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
应届生人事助理求职信
2013/11/09 职场文书
高三历史教学反思
2014/01/09 职场文书
致百米运动员广播稿
2014/01/29 职场文书
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏