PM2 如何进行进程守护和恢复

阅读时长 5 分钟读完

在 Web 开发的过程中,我们经常会遇到需要管理多个进程的情况,如 Node.js 服务、后台任务等。这时候,PM2 可以成为非常有用的工具,它可以帮助我们进行进程守护和恢复,从而提高应用的稳定性和可用性。

什么是 PM2

PM2 是一个 Node.js 应用程序的生产流程管理工具,它可以管理你的应用程序,保证它们始终保持启动状态,即使存在异常退出也可以相应地重启,同时还能监视你的应用程序,当内存占用过高时进行告警。

PM2 是一个基于 Node.js 的开源项目,完全免费,并且支持跨平台使用,支持 Windows、Linux、MacOS 和公有云运行环境等。

安装和使用 PM2

首先我们需要全局安装 PM2,在命令行中输入以下命令即可:

安装完成后,我们可以通过以下命令启动一个应用进程:

这将在后台启动一个 Node.js 进程,并保证它始终处于运行状态。如果我们不希望 PM2 管理某一个进程,也可以在启动时指定 --no-daemon 参数,即:

这样启动的进程会在前台运行,这在调试代码时可能会更加方便。

如果我们需要查看已经启动的进程,可以使用以下命令:

这将列出所有已经启动的进程,包括进程 ID、名称、状态、版本号等信息。

如果我们需要重启某一个进程,可以使用以下命令:

这将重启名称为 app 的进程。

除了以上的命令之外,PM2 还支持很多其他的命令,如停止进程、查看日志、设置环境变量等。

进程守护和恢复

PM2 最大的特点之一就是可以进行进程守护和恢复。一旦应用程序出现了异常,PM2 会自动重启应用程序,从而保证应用程序始终处于运行状态。

PM2 的进程守护和恢复依赖于 PM2 自身的监控机制。当 PM2 发现一个进程异常退出时,会根据配置文件中的设置自动重启进程。下面我们来具体了解一下:

配置文件

在使用 PM2 进行进程管理时,我们需要准备一个配置文件(pm2.config.js),并在启动时指定该配置文件。该配置文件是一个 JavaScript 文件,包括一个名为 module.exports 的对象,对象中可以设置一些 PM2 启动时需要的参数,如应用程序的入口文件、应用程序需要使用的环境变量等。例如:

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

    -- ------- ---------- -------------------------------------------------------------
    ----- ---- -----
    ---------- --
    ------------ -----
    ------ ------
    ------------------- -----
    ---- -
      --------- ------------
    --
    --------------- -
      --------- ------------
    -
  --
--
展开代码

上面的配置文件中,apps 数组中包含一个应用程序对象,该对象包括了以下属性:

  • name:应用程序名称
  • script:应用程序入口文件
  • instances:应用程序启动的实例个数,可以设置为 0,表示根据 CPU 核数来启动实例
  • autorestart:当应用程序异常退出时,是否自动重启,默认为 true
  • watch:当文件变化时,是否自动重启,默认为 false
  • max_memory_restart:应用程序占用内存的阈值,超过该阈值时自动重启应用程序
  • env:应用程序所需要的环境变量
  • env_production:生产环境所需要的环境变量

除了以上的属性之外,我们还可以通过 args 参数来为应用程序传递参数,如上面的配置中通过 args: 'one two' 传递了两个参数给应用程序。

进程重启

当应用程序异常退出时,PM2 会根据配置文件中的设置自动重启应用程序。此时,我们可以在 PM2 的日志中查看详细的错误日志,进而进行问题排错。

如果需要手动重启某一个进程,可以使用以下命令:

这将重启名称为 app 的进程。

进程监控

PM2 还可以在运行期间监控进程的使用情况,如 CPU 占用率、内存占用率等。如果进程内存占用过高,PM2 可以根据配置文件中的设置来自动进行重启。

我们可以使用以下命令来监控进程:

这将打开一个 Web 界面,显示当前所有进程的状态信息,包括 CPU 占用率、内存占用率、事件循环延迟等。

总结

本文介绍了如何使用 PM2 进行进程守护和恢复,包括了 PM2 的安装、使用方法、进程守护和恢复的原理等。希望本文能够对大家有所帮助,在日常的开发中能够更加轻松地管理多个进程。

附:示例代码

以下是一个简单的 Node.js 应用程序代码(app.js):

使用 PM2 启动该应用程序,可以使用以下命令:

该命令中有几个参数需要注意:

  • --name:指定应用程序名称为 myapp
  • --watch:当文件变化时,自动重启应用程序
  • --node-args="--inspect-brk=0.0.0.0:9229":开启 Node.js 的调试模式,并监听 9229 端口,这样可以通过 VS Code 进行远程调试

以上命令执行成功后,可以通过以下命令查看进程状态:

同时也可以通过浏览器访问 http://localhost:3000 查看应用程序是否正常运行。

如果需要重启应用程序,可以使用以下命令:

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

纠错
反馈

纠错反馈