当前位置: 首页 > news >正文

PM2模块

PM2 是一个流行的 Node.js 进程管理器,用于在生产环境中管理、监控和守护 Node.js 应用。它提供了进程守护、负载均衡、日志管理、性能监控等功能,极大简化了 Node.js 应用的部署和维护。


PM2 核心功能

1. 进程守护(Daemon)

  • 如果 Node.js 应用崩溃,PM2 会自动重启它,确保服务高可用。

  • 适合生产环境,避免手动重启服务。

2. 负载均衡(Cluster Mode)

  • 支持多进程模式(利用多核 CPU),提升应用性能。

  • 示例:

    pm2 start app.js -i 4  # 启动4个进程(根据CPU核心数自动优化)

3. 日志管理

  • 自动记录应用日志(stdout 和 stderr),支持日志分割和查看。

  • 示例:

    pm2 logs             # 查看实时日志
    pm2 logs --lines 100 # 查看最近100行日志

4. 监控(Monitoring)

  • 实时监控 CPU、内存占用等指标:

    pm2 monit
  • 生成性能报告:

    pm2 show <app_name>

5. 开机自启动

  • 让 PM2 管理的应用在服务器重启后自动运行:

    pm2 startup          # 生成启动脚本
    pm2 save             # 保存当前进程列表

6. 环境变量管理

  • 支持不同环境(如 development / production)配置:

    pm2 start app.js --env production

PM2 基本使用

安装

npm install pm2 -g  # 全局安装

常用命令

命令说明
pm2 start app.js启动应用
pm2 list查看运行中的进程
pm2 stop <app_name>停止应用
pm2 restart <app_name>重启应用
pm2 delete <app_name>删除应用
pm2 reload all零停机重启(适用于集群模式)
pm2 flush清空日志

PM2 高级用法

1. 配置文件(ecosystem.config.js

  • 适用于复杂部署(多应用、环境变量、集群模式等)。

  • 示例:

    module.exports = {apps: [{name: "my-app",script: "app.js",instances: "max",  // 使用所有CPU核心env: {NODE_ENV: "development",},env_production: {NODE_ENV: "production",}}]
    };
  • 启动方式:

    pm2 start ecosystem.config.js --env production

2. 远程部署(PM2 Deploy)

  • 支持通过 SSH 在多台服务器上部署应用(类似 CI/CD)。

  • 示例配置:

    module.exports = {deploy: {production: {user: "root",host: ["server1.com", "server2.com"],ref: "origin/main",repo: "git@github.com:user/repo.git",path: "/var/www/my-app","post-deploy": "npm install && pm2 reload ecosystem.config.js"}}
    };
  • 执行部署:

    pm2 deploy production

PM2 vs 其他工具

工具适用场景特点
PM2Node.js 生产环境进程守护、集群模式、日志管理
nodemon开发环境文件变更自动重启,不适合生产
forever简单守护功能较少,不如 PM2 强大

总结

✅ PM2 是 Node.js 生产级进程管理工具,适用于:

  • 需要 高可用(自动重启崩溃的进程)

  • 需要 负载均衡(多核 CPU 优化)

  • 需要 日志管理 & 监控

  • 需要 开机自启动

🚀 推荐使用 ecosystem.config.js 管理复杂应用,结合 pm2 deploy 实现自动化部署。

http://www.xdnf.cn/news/19873.html

相关文章:

  • AI专题(一)----NLP2SQL探索以及解决方案
  • std::unordered_set(C++)
  • Java课程内容大纲(附重点与考试方向)
  • 算法01-最小生成树prim算法
  • C语言复习笔记--字符函数和字符串函数(上)
  • Xen安装ubuntu并启动过程记录
  • final关键字带来的问题
  • 大数据赋能,全面提升‘企业服务平台’实际效能!
  • 见多识广3:帕累托最优解与帕累托前沿
  • HAL详解
  • C#学习第16天:聊聊反射
  • API 即 MCP|Higress 发布 MCP Marketplace,加速存量 API 跨入 MCP 时代
  • 电脑开机启动慢的原因
  • Python 的 pip 命令详解,涵盖常用操作和高级用法
  • ES数据库索引报错
  • 十、数据库day02--SQL语句01
  • 基于Python的MCP Server技术解析:从AI代理到实时数据处理的智能化实践
  • 博客系统案例练习-回顾
  • MMAction2安装
  • 3、整合前端基础交互页面
  • 幽灵依赖与常见依赖管理
  • C++每日训练 Day 17:构建响应式加载动画与异步数据处理
  • 笔记本电脑屏幕闪烁是怎么回事 原因及解决方法
  • 【Drools+springboot3规则匹配】
  • 【计算机网络 | 第一篇】计算机网络基础知识
  • 【Linux】部署vfstpd服务端,让客户端通过访问不同的端口号,可以实现访问不同的目录
  • 刀片服务器的散热构造方式
  • C++17 新特性简解
  • 分享4-5月工信部排考计划
  • 评测 Doubao-1.5-thinking-pro | 豆包·深度思考模型