pm2使用

哈喽!你提到"pm2使用",是不是正在部署 Node.js 项目,或者想让自己的服务更稳定、更专业地跑在服务器上?😄

别担心,PM2 真的是 Node.js 开发者的好朋友------它能帮你自动重启崩溃的服务、利用多核 CPU 提升性能、集中管理日志,甚至开机自启

我来给你一个「从零到上线」的实用指南,结合你可能的真实场景👇


✅ 第一步:安装 PM2(全局)

复制代码
npm install pm2 -g
# 或用 yarn
yarn global add pm2

💡 建议用 nvm 管理 Node 版本,避免权限问题。


✅ 第二步:快速启动你的应用

假设你的入口文件是 app.js

复制代码
# 最简单启动
pm2 start app.js

# 更推荐:带名字 + 多实例 + 日志时间戳
pm2 start app.js --name "my-api" -i max --time
  • --name:给进程起个好记的名字(后面操作都靠它)
  • -i max:开启 集群模式,自动用满 CPU 核心数,提升并发能力
  • --time:日志前面加时间戳,排查问题超方便!

✅ 第三步:日常管理命令(记住这几个就够了)

复制代码
pm2 list                # 查看所有运行中的应用
pm2 logs my-api         # 实时看日志(按 Ctrl+C 退出)
pm2 logs my-api --lines 200  # 只看最近200行
pm2 monit               # 实时监控 CPU/内存(界面超酷)
pm2 restart my-api      # 重启
pm2 reload my-api       # 零停机重启(仅 cluster 模式有效!)
pm2 stop my-api         # 停止
pm2 delete my-api       # 彻底删除

⚠️ 注意:restart 会中断服务,reload 才是生产环境推荐的平滑重启方式!


✅ 第四步:用配置文件(强烈推荐!)

当参数变多时,命令行太乱了。用 ecosystem.config.js 统一管理:

  1. 生成模板:

    pm2 init

  2. 编辑 ecosystem.config.js

    module.exports = {
    apps: [{
    name: 'my-api',
    script: './app.js',
    instances: 'max',
    exec_mode: 'cluster',
    env: {
    NODE_ENV: 'development',
    PORT: 3000
    },
    env_production: {
    NODE_ENV: 'production',
    PORT: 8080
    },
    max_restarts: 5, // 崩溃太多次就别试了
    autorestart: true,
    watch: false, // 生产环境一般关掉 watch
    error_file: './logs/err.log',
    out_file: './logs/out.log'
    }]
    };

  3. 启动:

    pm2 start ecosystem.config.js --env production


✅ 第五步:生产环境必备技巧

🔒 开机自启(服务器重启后自动拉起服务)
复制代码
pm2 startup    # 按提示执行输出的命令(比如 systemd)
pm2 save       # 保存当前进程列表
📁 日志切割(防止日志撑爆磁盘)
复制代码
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 50M
pm2 set pm2-logrotate:retain 10   # 保留10个旧日志
pm2 set pm2-logrotate:compress true
🔄 平滑部署(配合 Git)

ecosystem.config.jsdeploy 字段配置,或直接用 CI/CD 脚本:

复制代码
git pull && npm install && pm2 reload ecosystem.config.js --env production

❓常见问题

  • Q:怎么知道我的应用是不是在 cluster 模式?
    A:pm2 list 中如果 mode 列显示 cluster 就是;fork 是单进程。
  • Q:内存泄漏怎么办?
    A:加 --max-memory-restart 500M,超限自动重启。
  • Q:日志太多看不懂?
    A:用 --time + 自定义日志格式(如 Winston),再配合 pm2-logrotate

如果你告诉我:

  • 你现在用的是什么框架(Express? Koa? NestJS?)
  • 是开发环境还是准备上线?
  • 有没有遇到具体报错?

我可以给你量身定制一条启动命令,甚至帮你写配置文件!✨

要不要试试看?🙂

相关推荐
寄存器漫游者14 分钟前
Linux 软件编程 - IO 编程
linux·运维·spring
charlotte1024102417 分钟前
高并发:关于在等待学校教务系统选课时的碎碎念
java·运维·网络
_别来无恙_31 分钟前
TFTP的使用Linux
linux·服务器
gaize121333 分钟前
Moltbot(Clawdbot) 专属轻量服务器
运维·服务器
Zaralike41 分钟前
Linux 服务器网络不通排查 SOP(标准操作流程)
linux·服务器·网络
getapi1 小时前
注塑件的费用构成
linux·服务器·ubuntu
鸽芷咕1 小时前
DrissionPage 成 CANN 仓库爆款自动化工具:背后原因何在?
运维·python·自动化·cann
池央2 小时前
CANN 算子生态的深度演进:稀疏计算支持与 PyPTO 范式的抽象层级
运维·人工智能·信号处理
Maynor9962 小时前
OpenClaw 玩家必备:用 AI 自动追踪社区最新动态
java·服务器·人工智能
郝学胜-神的一滴2 小时前
深入解析C/S模型下的TCP通信流程:从握手到挥手的技术之旅
linux·服务器·c语言·网络·网络协议·tcp/ip