PM2 介绍

简介: 【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实时生图绘板
相关文章
|
11月前
|
JavaScript 安全 前端开发
Vue2 和 Vue3 中 Vue Router 用法与原理详解
本文深入解析 Vue Router 在 Vue2(v3)与 Vue3(v4)中的核心用法与原理,涵盖安装配置、声明式与编程式导航、路由守卫、懒加载、动态路由及性能优化。对比版本差异,揭示其基于响应式系统实现的路由匹配与视图更新机制,助力开发者构建高效、可维护的单页应用。
976 2
|
定位技术
干货!解决Cesium中Entity移动漂移的问题
案例场景:在Cesium开发三维场景展示中,肯定会碰到加载Entity的需求,如果在你的gis应用中,带了地形的展示。那么在旋转切换画面时,Entity是否跟着一起动了起来,感觉像漂移一样呢?
5076 0
干货!解决Cesium中Entity移动漂移的问题
交叉证书
## 证书4要素 pubkey(公钥) ,有一个其一一对应的私钥,由证书拥有者保存。 subject(名字),可以理解为证书的名字,你可以理解为 网站的域名。 issuer(颁发者的名字),即上级证书的subject。 signature(签名) ,上级证书使用私钥对当前证书进行签名的值。 ## 证书签名 假设 有 3 级 证书 ![image.png](
6087 0
支付宝 - 支付宝怎么解除自动续费?
支付宝 - 支付宝怎么解除自动续费?
8512 1
支付宝 - 支付宝怎么解除自动续费?
|
存储 数据可视化 数据挖掘
【docker】使用docker安装部署elasticsearch+Kibana(上)
【docker】使用docker安装部署elasticsearch+Kibana
1392 0
|
10月前
|
网络协议 安全 应用服务中间件
Debian 11.1 安装Nginx 并开启HTTP3 详细教程
本文介绍如何在Linux系统中从源码编译安装支持HTTP/3的Nginx 1.25.5。涵盖系统更新、依赖安装、源码下载、配置编译参数(含HTTP/3模块)、安装及验证全过程,并提供启用HTTP/2与HTTP/3共存的nginx.conf配置示例,确保兼容性。最后提醒开放云服务器安全组的TCP/UDP 443端口以支持QUIC协议。
483 10
|
开发工具 git
git fetch和 pull的区别
`git fetch`和 `git pull`在Git中扮演着不同的角色,了解它们的区别和使用场景对于高效管理代码库至关重要。通过合理使用这两个命令,可以更好地控制代码合并过程,减少冲突,提高团队协作效率。
1349 97
|
资源调度 JavaScript 前端开发
搭建和部署nuxt项目
【8月更文挑战第4天】
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
1021 10