文档章节

Node pm2

China_OS
 China_OS
发布于 2017/09/08 11:10
字数 651
阅读 45
收藏 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


 

© 著作权归作者所有

共有 人打赏支持
上一篇: eureka.conf
下一篇: Easy Mock部署使用
China_OS
粉丝 414
博文 453
码字总数 511906
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

通过Docker容器连接代理Wormhole

Wormhole 是一个能识别命名空间的由 Socket 激活的隧道代理。可以让你安全的连接在不同物理机器上的 Docker 容器。可以用来完成一些有趣的功能,例如连接运行在容器本机的服务或者在连接后创...

Linux就该这么学
19分钟前
1
0
从架构到平台, POWER 9处理器最全解读

本文根据IBM中国芯片设计部门高级经理尹文,在「智东西公开课」的超级公开课IBM专场《POWER 9-认知时代的驱动力》 上的系统讲解整理而来。 本次讲解中,尹文老师从内核微架构、总线互连、异构...

Mr_zebra
22分钟前
1
0
openjdk和oraclejdk有什么区别吗?

1.授权协议的不同:OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。 2.Open...

吴伟祥
23分钟前
2
0
c++基类析构函数要声明为virtual的原因

更深层的原因不知道,不过标准规定,如果不声明为virtual,那么将会导致未定义行为。个人测试结果表明,如果不声明为virtual,那么派生类的析构函数将不会得到调用

安非他命
29分钟前
1
0
CentOS 7下protobuf的源码编译安装

protobuf的github地址:https://github.com/google/protobuf支持多种语言,有多个语言的版本,本文采用的是在CentOS 7下编译源码进行安装。 github上有详细的安装说明:https://github.com/...

xtof
36分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部