Node.js 是一个流行的服务器端运行环境,它让开发者可以使用 JavaScript 在服务器端编写代码。在部署 Node.js 项目时,我们需要一个进程管理工具来管理我们的 Node.js 进程。PM2 是一个流行的进程管理工具,它可以帮助我们管理 Node.js 项目,并且支持负载均衡。
安装 PM2
你可以使用 npm 来安装 PM2:
npm install pm2 -g
-g 标志使得 PM2 成为了全局模块,你可以在终端的任何地方使用 PM2 命令。
使用 pm2 命令启动 Node.js 项目时,使用以下命令:
pm2 start app.js
这将启动 app.js 文件并创建一个名为 app 的进程。你可以使用以下命令来查看这个进程的信息:
pm2 describe app
使用 PM2 进行负载均衡
PM2 能够实现负载均衡,这是因为它可以开启多个 Node.js 进程来共同处理提交上来的请求。
PM2 支持在单个CPU核心、多个CPU核心(集群模式)、多服务器(远程模式)上运行 Node.js 应用程序。在多个 CPU 核心上运行应用程序可以通过使用 Node.js 的 cluster 模块,但是 PM2 具有更高的可用性和更容易的操作。
在使用 PM2 进行负载均衡之前,我们需要修改一下我们的 Node.js 代码,使得我们可以使用 PM2 的集群模式。这里是一个简单的 Node.js 项目:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- --- - ------------ ----------------------- ---- -- - ------- ------ ---- ---- -- ---------------- -- ------- --------- --------------- -- -- - -------------------- ------- --------- --
我们想要修改这个项目使得它可以在 PM2 集群模式下运行。为此,我们需要添加一个 Cluster 模块。以下是修改后的代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---- - ---------------- ----- ------- - ---------------------------- ----- --- - ------------ -- ------------------ - ------------------- ---- --------- --- ---- - - -- - - -------- ---- - --------------- - ------------------ -------- ----- ------- -- - ------------------- --------------------- ------- --------------- --- - ---- - ----------------------- ---- -- - ------- ------ ---- ---- -- ---------------- -- ------- ----------------- --------------- -- -- - ------------------- ---- ----------------- --- -
在这个新版本的代码中,我们使用了 Node.js 内置的 Cluster 模块来支持多个工作进程。首先,我们检查当前进程是主进程还是工作进程。如果当前进程是主进程,我们使用 cluster.fork() 方法来派生出 numCPUs 个工作进程。当一个工作进程结束时,我们使用 cluster.fork() 方法来代替它。如果当前进程是工作进程,我们就监听 8080 端口并在请求到来时进行处理。
现在我们有了可以在 PM2 下运行的代码,我们可以使用以下命令来启动 Node.js 集群模式应用程序:
pm2 start app.js -i 0
-i 0 表示需要开启的子进程数量,0 表示自动检测设置成服务器的 CPU 核心个数。
运行以上命令,PM2 将创建一个新的应用程序实例,该实例将自动在所有可用的 CPU 核心上启动多个 Node.js 进程,并使用负载均衡来分配请求。也就是说,如果你的机器有 4 个 CPU 核心,PM2 将在这 4 个核心上启动 4 个工作进程。如果你向该应用程序发送 HTTP 请求,每个请求将随机分配给其中一个工作进程,以使所有核心在处理方面负载平衡。
PM2 的其它功能
PM2 还有其它有用的功能,例如自动重启,监视文件更改并自动重启,服务器状态监视等等。你可以在 PM2 文档中了解它的其它功能:
结论
在本文中,我们介绍了使用 PM2 启动 Node.js 应用程序和如何使用 PM2 进行负载均衡。我们还看到了如何修改 Node.js 代码以支持 PM2 的集群模式,并启动该应用程序来利用 PM2 的负载均衡功能。最后,我们提到了 PM2 的其它功能,让你进一步掌握这个进程管理工具。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672c7c39ddd3a70eb6d855d7