PM2 如何同时运行多个应用

阅读时长 5 分钟读完

本文将介绍 PM2 管理工具如何同时运行多个应用,以及如何进行配置。PM2 是一个基于 Node.js 的进程管理工具,可以方便地管理应用的启动、重启、停止等操作,还支持集群模式和负载均衡。

背景知识

在介绍如何同时运行多个应用之前,我们先来了解一下 PM2 的一些基础知识。

进程、守护进程和守护程序

进程是计算机中正在运行的程序的实例。在 Linux 中,进程的状态有:

  • 运行(Running)
  • 停止(Stopped)
  • 暂停(Paused)
  • 睡眠(Sleeping)

当一个进程被运行时,操作系统会为它分配一些系统资源(如内存、CPU 等),当进程退出时,这些资源就会被回收。

守护进程是在后台运行的进程,一般用于一些需要长时间运行的服务。守护进程通常以 root 用户启动,在运行过程中也不与终端交互。

守护程序(Daemon)是一个运行在后台的程序,不与任何终端交互。常常用来实现一些系统级别的操作,如定时备份、网络连接管理等。

PM2

PM2 是一个基于 Node.js 的进程管理工具,可以帮助我们轻松地管理 Node.js 应用。PM2 支持以下功能:

  • 应用的启动、停止、重启等操作
  • 守护进程的启动、停止等操作
  • 记录各应用的日志,方便排查问题
  • 支持集群模式和负载均衡

如何同时运行多个应用

在 PM2 中,通过配置文件的方式来管理多个应用。我们可以在配置文件中指定多个应用的启动命令、环境变量等信息。举个例子,假设我们有两个 Node.js 应用,分别放在目录 /app1 和 /app2 中,我们可以在该目录下创建一个名为 pm2.config.js 的文件,文件内容如下:

-- -------------------- ---- -------
-------------- - -
  ---- - -
    -
      ----- -------
      ------- -----------------
      ---- -
        --------- ------------
      -
    --
    -
      ----- -------
      ------- -----------------
      ---- -
        --------- ------------
      -
    -
  -
-

在配置文件中,我们定义了两个应用的启动信息:应用的名称、启动命令以及环境变量。NODE_ENV 是一个常见的 Node.js 环境变量,用来指定应用的运行环境(如开发、测试、生产等)。

配置文件创建好后,我们可以使用 pm2 命令来启动多个应用:

通过这个命令,我们指定了 pm2.config.js 文件作为配置文件,并启动了其中定义的两个应用。如果一切正常,应用的启动日志会输出到控制台。

除了启动多个应用,PM2 还支持以下功能:

  • 停止应用:pm2 stop <app_name>
  • 重新启动应用:pm2 restart <app_name>
  • 删除应用:pm2 delete <app_name>
  • 查看应用列表:pm2 list
  • 查看应用日志:pm2 logs <app_name>

集群模式和负载均衡

除了单个进程的管理,PM2 还支持集群模式和负载均衡。在集群模式下,PM2 会启动多个 Node.js 进程,每个进程都可以处理客户端的请求。当有新的请求时,PM2 会按照指定的负载均衡策略将请求分配到不同的进程中,从而实现负载均衡。

我们可以在配置文件中指定集群模式和负载均衡策略,例如:

-- -------------------- ---- -------
-------------- - -
  ---- - -
    -
      ----- -------
      ------- -----------------
      ---- -
        --------- ------------
      --
      ---------- ------
      ---------- ----------
      -- ------
      -- ----------------------------------------------------- ---
      -- ---------------
      -- ---------------------------------------------------------
      --------------- -
        ------- -------------
      -
    --
    -
      ----- -------
      ------- -----------------
      ---- -
        --------- ------------
      --
      ---------- --
      ---------- ----------
      --------------- -
        ------- -------------------
      -
    -
  -
-

在配置文件中,我们对应用进行了一些修改:

  • instances:指定每个应用启动的进程数。max 表示使用 CPU 核心数(最大化利用 CPU),2 表示启动两个进程。
  • exec_mode:指定运行模式,可以是 fork(默认)或 cluster。fork 表示使用单进程模式,cluster 表示使用集群模式。
  • load_balancing:指定负载均衡策略。可以选用的策略有 round-robin(轮询)、least-connections(最小连接)和 ip-hash(IP 哈希)。

总结

在本文中,我们介绍了 PM2 进程管理工具如何同时运行多个应用。我们了解了 PM2 的基础知识、创建了一个配置文件,并使用 pm2 命令启动了多个应用。最后,我们还简单介绍了 PM2 支持集群模式和负载均衡的功能,希望对读者有所启发。

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

纠错
反馈