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

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

要不要试试看?🙂

相关推荐
05大叔1 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密1 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20151 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑
卷福同学1 小时前
【养虾日记】QClaw操作浏览器自动化发文
运维·人工智能·程序人生·自动化
woho7788992 小时前
不同网段IP的网络打印机,打印、扫描设置
运维·服务器·网络
耗子会飞2 小时前
小白学习固定VM虚拟机的centos服务器的IP
运维·服务器·centos
门豪杰3 小时前
Ubuntu下安装Claude Code
linux·运维·ubuntu·claude·claude code
新新学长搞科研3 小时前
第五届电子、集成电路与通信技术国际学术会议(EICCT 2026)
运维·人工智能·自动化·集成测试·信号处理·集成学习·电气自动化
桌面运维家4 小时前
Windows/Linux双启动:BIOS/UEFI多配置桌面创建指南
linux·运维·windows
無法複制4 小时前
debian安装Postgresql-14.x
运维·postgresql·debian