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?)
  • 是开发环境还是准备上线?
  • 有没有遇到具体报错?

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

要不要试试看?🙂

相关推荐
Wpa.wk2 小时前
Docker容器隔离(namespace+cgroups)-底层原理
运维·docker·容器
IT狂人日志2 小时前
临近年底,病毒肆虐,为防暴力破解,把服务器改为证书登录
运维·服务器
修己xj2 小时前
Docker 部署 PicGo:一次配置,随处使用
运维·docker·容器
Ha_To2 小时前
2026.1.29 docker的使用
运维·docker·容器
刘某某.2 小时前
在 mac 和 linux 系统上使用 pyenv
linux·运维·macos
A-刘晨阳3 小时前
Prometheus + Grafana + Alertmanager 实现邮件监控告警及配置告警信息
运维·云计算·grafana·prometheus·监控·邮件
是垚不是土3 小时前
OpenTelemetry+Jaeger+ES:分布式链路追踪实战部署
大数据·linux·运维·分布式·elasticsearch·全文检索
曹天骄3 小时前
Cloudflare CDN 预热全面实战指南(含全球 PoP 解析 + 预热覆盖模型)
运维·开发语言·缓存
三不原则3 小时前
AIOps 数据采集:日志/指标/链路数据的整合与标准化
运维