如何使用 PM2 启动 Node.js 项目并负载均衡

阅读时长 5 分钟读完

Node.js 是一个流行的服务器端运行环境,它让开发者可以使用 JavaScript 在服务器端编写代码。在部署 Node.js 项目时,我们需要一个进程管理工具来管理我们的 Node.js 进程。PM2 是一个流行的进程管理工具,它可以帮助我们管理 Node.js 项目,并且支持负载均衡。

安装 PM2

你可以使用 npm 来安装 PM2:

-g 标志使得 PM2 成为了全局模块,你可以在终端的任何地方使用 PM2 命令。

使用 pm2 命令启动 Node.js 项目时,使用以下命令:

这将启动 app.js 文件并创建一个名为 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 集群模式应用程序:

-i 0 表示需要开启的子进程数量,0 表示自动检测设置成服务器的 CPU 核心个数。

运行以上命令,PM2 将创建一个新的应用程序实例,该实例将自动在所有可用的 CPU 核心上启动多个 Node.js 进程,并使用负载均衡来分配请求。也就是说,如果你的机器有 4 个 CPU 核心,PM2 将在这 4 个核心上启动 4 个工作进程。如果你向该应用程序发送 HTTP 请求,每个请求将随机分配给其中一个工作进程,以使所有核心在处理方面负载平衡。

PM2 的其它功能

PM2 还有其它有用的功能,例如自动重启,监视文件更改并自动重启,服务器状态监视等等。你可以在 PM2 文档中了解它的其它功能:

PM2 官方文档

结论

在本文中,我们介绍了使用 PM2 启动 Node.js 应用程序和如何使用 PM2 进行负载均衡。我们还看到了如何修改 Node.js 代码以支持 PM2 的集群模式,并启动该应用程序来利用 PM2 的负载均衡功能。最后,我们提到了 PM2 的其它功能,让你进一步掌握这个进程管理工具。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672c7c39ddd3a70eb6d855d7

纠错
反馈