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

Linux 下的 PM2 完整指南

PM2 是 Node.js 应用的专业级进程管理器,专为生产环境设计,提供应用守护、集群管理、日志监控等核心功能。


🔰 核心特性
  1. 应用守护:崩溃时自动重启
  2. 零秒重载:热更新应用不停机 (pm2 reload)
  3. 负载均衡:通过集群模式利用多核 CPU
  4. 日志管理:集中收集 stdout/stderr 日志
  5. 监控仪表盘:实时查看 CPU/内存/请求状态

📥 安装与更新

# 通过 NPM 安装
npm install pm2@latest -g# 更新到最新版本
pm2 update# 验证安装
pm2 --version  # 输出 v5.3.0+

🔧 核心命令手册

1. 进程生命周期管理
命令作用示例
pm2 start启动应用pm2 start app.js --name "API"
pm2 stop停止应用pm2 stop 0(ID)或 pm2 stop all
pm2 restart硬重启pm2 restart api(应用名)
pm2 reload软重载(不停机)pm2 reload cluster-app
pm2 delete移除进程pm2 delete 1pm2 delete all
2. 集群模式(负载均衡)
# 启动 4 个实例(自动负载均衡)
pm2 start app.js -i 4 --name "worker-cluster"# 根据 CPU 核心数启动
pm2 start app.js -i max  # 为每个核心启动一个进程# 动态扩容缩容
pm2 scale api +2  # 增加 2 个实例  
pm2 scale worker 2 # 固定到 2 个实例
3. 监控与日志
命令作用
pm2 status查看进程状态表
pm2 monit打开实时监控仪表盘
pm2 logs显示所有日志
pm2 logs api --err仅显示错误日志
pm2 flush清空历史日志
pm2 startup创建系统服务(开机自启)
4. 配置文件(关键)

通过 ecosystem.config.js 管理复杂配置:

module.exports = {apps: [{name: "prod-api",script: "./src/server.js",instances: 4,           // 集群实例数exec_mode: "cluster",    // 集群模式env: {NODE_ENV: "production",PORT: 8080},error_file: "/var/log/api.err.log",out_file: "/var/log/api.out.log",max_memory_restart: "1G" // 内存超限自动重启}, {name: "dev-worker",script: "./jobs/worker.js",watch: true             // 文件改动自动重启}]
};

使用配置启动pm2 start ecosystem.config.js


⚙️ 高级运维操作

环境变量隔离
# 针对不同环境启动
pm2 start app.js --env production
pm2 start app.js --env staging

ecosystem.config.js 中配置 env_productionenv_staging 区分

健康检查

开启 HTTP 健康检查端点:

{name: "health-api",script: "server.js",http: "http://localhost:8080/health", // 健康检查 URLmax_restarts: 3,                      // 3 次失败后停止restart_delay: 5000                   // 检查间隔 5 秒
}
定时重启(内存泄漏防御)
# 每天 UTC 时间 04:30 重启
pm2 restart api --cron "30 4 * * *"

🚨 故障排除

问题诊断命令
应用反复崩溃pm2 logs --lines 1000
CPU 占用过高pm2 monit + pm2 describe <id>
端口冲突pm2 list 查端口 + lsof -i :8080
启动失败NODE_ENV=development pm2 start app.js --no-daemon
文件描述符耗尽`pm2 describe

📊 可视化监控

# 启用 Web 控制台(需 pm2 plus 账号)
pm2 plus   # 注册/登录
pm2 link   # 连接实例到云端# 本地网页仪表盘(端口 9615)
pm2 serve   # 访问 http://localhost:9615

⚠️ 安全提醒

  1. 不使用 root 运行

    # 创建专用用户
    sudo useradd -m -s /bin/bash pmuser
    sudo -u pmuser pm2 start app.js
    
  2. 防火墙限制

    sudo ufw allow from 192.168.1.0/24 to any port 8080  # 仅内网访问
    
  3. 日志权限加固

    chmod 600 /var/log/pm2/*.log
    

通过 PM2,你可以将 Node.js 应用的 可用性提升 99.95%+。更多命令参考官方文档:PM2 Runtime Documentation

相关文章:

  • linux基于内存实现jar文件搜索
  • 如何有效监控JVM环境,保障应用性能
  • Elasticsearch:使用 ES|QL 进行地理空间距离搜索
  • 动态规划3——背包类动态规划详解
  • elasticSearch是什么,如何使用,有什么用
  • 考研系列—408真题操作系统篇(2015-2019)
  • Windows环境变量原理(用户变量与系统变量)(用户环境变量、系统环境变量)
  • centos6.5 老旧系统编译glib-2.58.3.tar.bz2
  • vue-property-decorator实践(一)
  • 如何通过插件系统打造个性化效率工作流
  • AUTOSAR图解==>AUTOSAR_TR_InteroperabilityOfAutosarTools
  • PEP 8: E302 expected 2 blank lines, found 0
  • [vela os_5] 中断系统 | 任务调度 | 日志系统
  • node.js连接mysql写接口(一)
  • jupyter notebook的相关知识及可能遇到的问题
  • spring-ai MCP Server运行一段时间后断联2
  • Spring Boot3批式访问Dify聊天助手接口
  • 力扣-70.爬楼梯
  • 电梯钢带安全无盲区:电梯钢带断丝智慧监测方案让隐患“毫秒现形“
  • 现代H5玻璃态特效实现教程
  • 动力网站建设/新平台推广
  • bae做网站/深圳全网推广托管
  • 网站建设鼠标点击变色怎么弄/百度一下首页登录
  • 郑州网站建设 郑州网站设计/百度权重排名
  • 上海做壁画的网站/收录是什么意思
  • 网站建设价格费用/360关键词推广