PM2 介绍

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【10月更文挑战第11天】

PM2 是一个流行的 Node.js 应用的进程管理器,它提供了许多功能,包括进程监控、自动重启、日志管理以及负载均衡等。以下是 PM2 进行进程管理的介绍、原理以及在应用中的使用说明:

介绍

PM2 是一个生产环境下的 Node.js 应用的进程管理器。它允许开发者管理和保持应用程序在线,即使在遇到崩溃或系统更新时也不会中断服务。PM2 提供了命令行工具,通过它可以启动、重启、停止和监控应用程序。

原理

  1. 进程守护: PM2 能够将 Node.js 应用程序作为守护进程运行,这意味着即使关闭了终端窗口,应用程序也会继续在后台运行。
  2. 自动重启: 当应用程序崩溃或停止响应时,PM2 能够自动重启它,确保服务的持续可用性。
  3. 日志管理: PM2 会记录应用程序的标准输出和错误输出,并将它们保存在日志文件中,方便开发者进行调试和监控。
  4. 负载均衡: PM2 支持多进程,可以按照配置启动多个应用程序实例,并且能够在这些实例之间实现负载均衡。
  5. 零停机重载: PM2 提供了零停机部署的功能,可以在不中断服务的情况下重新加载应用程序。
    以下是 PM2 的一些关键原理:
  • Cluster Mode: PM2 使用 Node.js 的 cluster 模块来利用多核 CPU 的能力,通过创建多个工作进程来提高应用程序的性能和可靠性。
  • 配置文件: PM2 允许通过配置文件来管理应用程序的设置,这使得在不同环境中部署和维护应用程序变得更加容易。

    应用

    在应用 PM2 时,以下是一些常见的步骤和用法:
  1. 安装 PM2:
    npm install pm2@latest -g
    
  2. 启动应用程序:
    pm2 start app.js
    
  3. 查看应用程序列表:
    pm2 list
    
  4. 监控应用程序:
    pm2 monit
    
  5. 日志管理:
    pm2 logs
    
  6. 零停机重载:
    pm2 reload app.js
    
  7. 停止应用程序:
    pm2 stop app.js
    
  8. 删除应用程序:
    pm2 delete app.js
    
  9. 使用配置文件:
    创建一个 ecosystem.config.js 文件来定义应用程序的配置,然后使用以下命令启动:
    pm2 start ecosystem.config.js
    
    通过使用 PM2,开发者可以简化 Node.js 应用的生产部署和维护工作,确保应用的高可用性和稳定性。

PM2 提供了自动重启功能,它可以在应用程序崩溃或者停止运行时自动重新启动应用程序。以下是配置 PM2 自动重启策略的步骤:

1. 使用命令行选项

当使用 PM2 启动应用程序时,可以指定一些命令行选项来配置自动重启策略:

  • --watch:监控应用程序的文件变动,一旦文件被修改,则自动重启应用。
  • --restart-delay:设置重启前的延迟时间(以毫秒为单位)。
    例如:
    pm2 start app.js --watch --restart-delay=5000
    
    这个命令将启动 app.js 应用程序,并且如果文件发生变化,它将在 5000 毫秒后重启。

    2. 使用配置文件

    创建一个 PM2 配置文件(通常命名为 ecosystem.config.js),可以更灵活地配置自动重启策略。以下是配置文件的一个例子:
    module.exports = {
         
    apps : [{
         
      name: 'app-name',
      script: 'app.js',
      // 自动重启配置
      autorestart: true, // 默认为 true,即启用自动重启
      watch: true, // 启用文件监控
      ignore_watch: ['node_modules', 'logs'], // 忽略监控的文件夹或文件
      watch_options: {
         
        followSymlinks: false,
        usePolling: true,
        interval: 1000,
        binaryInterval: 3000
      },
      restart_delay: 5000 // 重启前的延迟时间(毫秒)
    }]
    };
    
    在这个配置文件中:
  • autorestart: 启用或禁用自动重启功能。
  • watch: 启用文件监控,当文件变动时自动重启应用。
  • ignore_watch: 指定不希望被监控的文件夹或文件。
  • watch_options: 更详细的文件监控配置,例如使用轮询(usePolling)和监控间隔(interval)。
  • restart_delay: 设置重启前的延迟时间。

    3. 应用配置文件

    使用配置文件启动应用程序:
    pm2 start ecosystem.config.js
    
    这样,PM2 就会根据 ecosystem.config.js 文件中的配置来管理应用程序,包括自动重启策略。

    注意事项

  • 文件监控可能会消耗额外的系统资源,特别是在大型项目中。
  • 在生产环境中,频繁的重启可能会影响用户体验,因此建议谨慎使用文件监控和自动重启功能。
  • 如果使用版本控制系统(如 git),请确保监控列表中不包括 .git 目录,以避免不必要的重启。
    通过以上步骤,你可以为你的 Node.js 应用程序配置 PM2 的自动重启策略,以确保应用的持续可用性。
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
域名解析 监控 JavaScript
宝塔面板pm2管理器部署node.js(express框架)sever文件,可以使用域名访问你的后端项目
宝塔面板pm2管理器部署node.js(express框架)sever文件,可以使用域名访问你的后端项目
1538 0
|
6月前
|
分布式计算 运维 搜索推荐
立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务
蝉妈妈旗下蝉选通过迁移到阿里云 Serverless Spark 及 Milvus,解决传统架构性能瓶颈与运维复杂性问题。新方案实现离线任务耗时减少40%、失败率降80%,Milvus 向量检索成本降低75%,支持更大规模数据处理,查询响应提速。
315 57
|
8月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
安全 Linux 网络安全
组网神器WireGuard安装与配置教程(超详细)
组网神器WireGuard安装与配置教程(超详细)
37421 2
|
缓存 Linux
CentOS7配置阿里yum源 超详细!!!
CentOS7配置阿里yum源 超详细!!!
32775 2
|
开发框架 JavaScript 中间件
node+express搭建服务器环境
node+express搭建服务器环境
172 1
node+express搭建服务器环境
|
存储 缓存 安全
Python案例分享:如何实现文件的上传下载
Python案例分享:如何实现文件的上传下载
940 6
|
11月前
|
存储 数据采集 算法
数据中台最全详解,一文彻底搞懂!
中台是大型数据架构模式,也是大型架构的必备技能,本篇全面详解数据中台,建议收藏备用。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
数据中台最全详解,一文彻底搞懂!
|
Docker Windows 容器
clash代理docker实现镜像拉取
clash代理docker实现镜像拉取
4629 1
草料重磅功能上新!可跨分区移动或复制账号下内容
支持将 分区 下的内容移动或复制到其他分区。适用于将原初始分区下的内容按业务划分,移动到其他分区。或者当物品流转或业务变更时,可以及时将码及数据移动到对应分区。
156 4