什么是 PM2?
PM2 是一个 Node.js 应用程序的生产流程管理工具,可以管理和监控 Node.js 应用程序的运行状况。使用 PM2 可以轻松地管理多个 Node.js 应用实例、启动和停止应用程序、监控应用程序的健康状况等等。
安装 PM2
安装 PM2 可以使用 npm 命令安装:
npm install pm2 -g
安装完毕后可以使用 pm2 --version
命令检查是否安装成功。
使用 PM2 启动应用程序
我们可以使用 PM2 启动一个应用程序,假设我们有一个名为 index.js 的 Node.js 应用程序,可以使用下面的命令启动应用程序:
pm2 start index.js
启动后,可以使用 pm2 list
命令查看当前正在运行的应用程序列表。可以看到应用程序的名称、状态、进程 ID 和启动时间等信息。
使用 PM2 监控应用程序
使用 PM2 启动应用程序后,可以使用 pm2 monit
命令实时监控应用程序的运行状态,包括 CPU、内存、I/O 等使用情况。
使用 PM2 重启和停止应用程序
如果需要重启或停止应用程序,可以使用 pm2 restart
和 pm2 stop
命令,分别是重启和停止所有应用程序,也可以指定应用程序的名称或 ID。
pm2 restart index pm2 stop index
PM2 实战:负载均衡和集群
PM2 最强大的功能之一是它的负载均衡和集群管理功能。我们可以在同一台服务器或者多台服务器上启动多个实例的 Node.js 应用程序,通过 PM2 提供的负载均衡和集群管理功能来管理应用程序。
负载均衡
负载均衡指多个应用程序实例共同处理用户请求,让用户的请求平均分配到每个实例上。通过使用 PM2 启动多个应用程序实例,可以实现负载均衡,从而提高应用程序的并发处理能力和性能。
首先,我们需要在应用程序中添加代码,以便在启动时指定监听端口,这样每个实例都会监听不同的端口。
const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200); res.end('Hello, world!'); }); server.listen(3000);
接着,我们可以使用 pm2 start
命令启动多个实例的应用程序,可以使用 -i
或者 --instances
参数来指定实例数量:
pm2 start index.js -i 4
这会启动 4 个实例的应用程序,它们会分别监听 3000、3001、3002 和 3003 端口。当用户发送请求时,PM2 会轮流将请求分配给不同端口的实例,从而实现负载均衡。
集群
集群指多台服务器上的应用程序实例通过网络互相连接,可以共同处理用户请求。通过使用 PM2 的集群管理功能,可以在多台服务器上启动同一个应用程序的多个实例,并将它们连接起来,实现集群功能。
首先,我们需要在每台服务器上启动应用程序实例,并使用 --name
参数指定应用程序的名称,该名称必须相同,否则它们无法连接:
pm2 start index.js --name my-app
接着,我们需要在一台服务器上通过 pm2 list
命令获取应用程序的监控信息,从而得到应用程序的端口号和集群信息,然后在另一台服务器上使用 pm2 scale
命令来启动多个实例,并将它们连接到集群中。比如,我们假设第一台服务器上的应用程序监听 3000 端口,并且有两个实例,可以使用下列命令来启动第二台服务器上的应用程序实例,并将它们连接到第一台服务器的应用程序中:
pm2 start index.js --name my-app -i 2 pm2 scale my-app 2 --no-daemon
这会启动 2 个实例的应用程序,并将它们连接到第一台服务器上的应用程序中。当用户发送请求时,请求会被负载均衡到不同的服务器上的应用程序实例中进行处理,从而实现高可用性和高性能。
总结
PM2 是一个非常强大的 Node.js 应用程序的生产流程管理工具,可以启动和停止应用程序、监控应用程序的运行状态、实现负载均衡和集群等功能。对于需要管理和监控多个 Node.js 应用程序实例的开发人员来说,使用 PM2 是非常值得推荐的。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/644f71c0980a9b385b8ef3c2