文档章节

Node pm2

China_OS
 China_OS
发布于 2017/09/08 11:10
字数 651
阅读 42
收藏 0

背景

        Node.js运行在JavaScript平台上,我们把该平台称之为V8引擎(chrome的)。不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心处理器的系统中并不能发挥其最大的性能。不过,Node.js给我们提供了cluster模块,它可以生成多个工作线程来共享同一个TCP连接。首先,Cluster会创建一个master,然后根据你指定的数量fork出多个server app(也被称之为工作线程)。它通过IPC通道与工作线程之间进行通信,并使用内置的负载均衡来更好地处理线程之间的压力,该负载均衡使用了Round-robin算法(也被称之为循环算法),当使用Round-robin调度策略时,master accepts()所有传入的连接请求,然后将相应的TCP请求处理发送给选中的工作线程

介绍

        PM2内部包含了所有上述的处理逻辑,因此你不必对代码做任何修改,就可以让你的Node.js应用更好的压榨服务器资源,官网

安装

    设置npm 淘宝源

npm config set registry https://registry.npm.taobao.org 
npm info underscore 

    安装pm2

npm install pm2 -g

    更新pm2

npm install pm2@latest -g

用法

# General
$ pm2 start app.js              # Start, Daemonize and auto-restart application (Node)
$ pm2 start app.py              # Start, Daemonize and auto-restart application (Python)
$ pm2 start npm -- start        # Start, Daemonize and auto-restart Node application

# Cluster Mode (Node.js only)
$ pm2 start app.js -i 4         # 在cluster模式后台运行pm2,启动4个app.js进程,会自动负载均衡
$ pm2 reload all                # 0秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 scale [app-name] 10       # 把某个app扩展到10个进程

# Process Monitoring
$ pm2 list                      # 显示所有PM2启动的进程状态
$ pm2 monit                     # 监视所有app进程
$ pm2 show [app-name]           # 显示指定app的信息

# Log management
$ pm2 logs                      # 显示所有app的日志
$ pm2 logs [app-name]           # 显示指定app的log信息
$ pm2 logs --json               # 以json格式显示log信息


# Process State Management
$ pm2 start app.js --name="api" # Start application and name it "api"
$ pm2 start app.js -- -a 34     # Start app and pass option "-a 34" as argument
$ pm2 start app.js --watch      # Restart application on file change
$ pm2 start script.sh           # 启动bash脚本
$ pm2 start app.json            # 启动app.json声明的应用
$ pm2 reset [app-name]          # Reset all counters
$ pm2 stop all                  # 停止所有app进程
$ pm2 stop 0                    # 停止id为0的app进程
$ pm2 restart all               # 重启所有app进程
$ pm2 gracefulReload all        # Gracefully reload all apps in cluster mode
$ pm2 delete all                # 杀死全部进程
$ pm2 delete 0                  # 杀死id为0的app进程

# Startup/Boot management
$ pm2 startup                   # Detect init system, generate and configure pm2 boot on startup
$ pm2 save                      # Save current process list
$ pm2 resurrect                 # Restore previously saved processes
$ pm2 unstartup                 # Disable and remove startup system


 

© 著作权归作者所有

共有 人打赏支持
China_OS
粉丝 410
博文 447
码字总数 499779
作品 0
徐汇
技术主管
TODO:Node.js pm2使用方法

TODO:Node.js pm2使用方法 pm2 是一个带有负载均衡功能的Node应用的进程管理器. 当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的。 1.使...

OneTODO
2016/11/07
31
0
Zabbix添加Node.js监控

目前网上已有 工具可以实现 Zabbix 对 Node.js 的监控报警,Github地址。 特征: 自动发现通过 PM2 管理的 Node.js 进程。 报告 Nodes.js 进程状态、CPU 使用率、内存占用以及进程是否重启。...

董松
2016/10/12
1K
12
yog-pm

yog-pm是在pm2的基础上提供了几个增强命令,提高pm2的易用性和稳定性。 安装 $ npm install -g yog-pm 使用 startOrReload : 启动pm2服务 服务没有启动时start服务,服务已经启动则会reloa...

叶秀兰
2014/07/28
424
0
搭建Highcharts曲线图导出工具

Highcharts是非常不错的页面曲线图工具,官网在https://www.highcharts.com/download/ 问题就是如果工作环境是个封闭的内网,曲线图就无法正常导出,就需要搭建本地导出服务器。 搭建方法如下...

chaodaibing
2017/12/02
0
0
探索 PM2 Cluster 模式下 Log4js 日志丢失

Node 应用为单线程应用,JS 虽可利用异步 I/O 避免线程阻塞,但无法利用多核 CPU 的优势提升运行效率,提高吞吐量仍需多线程。Node Cluster 可产生多个工作线程共享同一 TCP 连接,主线程通过...

呆恋小喵_sunmy
08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
3
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部