一个带有负载均衡的开源的基于 nodejs 的应用进程管理器,一般是用于 nodejs 应用程序的守护进程最佳选择。
主要特性
- 内建负载均衡(使用 Node cluster 集群模块)
- 后台运行
- 0 秒停机重载
- 具有 Ubuntu 和 CentOS 的启动脚本
- 停止不稳定的进程(避免无限循环)
- 控制台检测
- 提供 HTTP API
- 远程控制和实时的接口 API(Nodejs 模块,允许和 PM2 进程管理器交互)
安装及使用
1. 操作
启动:pm2 start 文件名
启动时添加启动节点实例(规定数量)--watch
代表监听文件变化:pm2 start app.js --watch -i 2
根据CPU核数启动节点实例:pm2 start app.js -i max
查看日志:pm2 logs
查看pm2控制的app列表:pm2 list
停止:pm2 stop appName
停止pm2:pm2 kill
开机自启动:pm2 startup
相关代码: ```javascript // app.js 最简单的负载均衡示例,随机 Error const http = require(‘http’) const server = http.createServer((req, res) => { // 随机 Error Math.random() > 0.5 ? aa() : ‘2’; res.end(‘Hello’) })
// 除了使用 server 启动,还可以抛出当前模块 // module.parent 判断为空,说明是当前这个模块是没有父亲,说明当前模块为主模块,是node直接引用的 // 子模块是有 parent 的 if(!module.parent) { server.listen(9527) } else { module.exports = server }
截图如下:<br /><br />
<a name="n95TD"></a>
## 2. process.yml
配置一个 process.yml 来辅助配置启动<br />命令行:`pm2 start process.yml`
```nginx
apps:
- script : app.js
instances: 2
watch : true
env :
NODE_ENV: production
特性解析
负载均衡
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
简单点儿说,一台服务器(进程)的吞吐量太大,爆炸宕机了,所以业务需求将吞吐量分散开,好几个服务器(进程)一起做处理,让一堆服务器(进程)一起做相同一件事儿,并且尽可能的平均分配,保证所有服务器(进程)的活儿都差不多。
这里面涉及到不同的均衡算法,轮询法、随机法、最小连接法。目前最小链接法比较受欢迎,还有不同的负载均衡的技术、不同的应用等。
0秒停机重载
意味着维护升级时无需停机
pm2 监控文件更改时自动启动,并且能够配置相关重载参数,并不一定仅仅是立即重载。