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

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

要不要试试看?🙂

相关推荐
星马梦缘8 小时前
如何切换window-ubuntu双系统【方案二】
linux·运维·ubuntu
2501_927283588 小时前
荣联汇智助力天津艺虹打造“软硬一体”智慧工厂,全流程自动化引领印刷包装行业数智变革
大数据·运维·数据仓库·人工智能·低代码·自动化
HXDGCL8 小时前
矩形环形导轨:自动化循环线的核心运动单元解析
运维·算法·自动化
丑八怪大丑9 小时前
Java网络编程
linux·服务器·网络
橙子也要努力变强9 小时前
信号捕捉底层机制-机理篇2
linux·服务器·c++
Jinkxs10 小时前
LoadBalancer- 主流负载均衡工具盘点:Nginx / Haproxy / Keepalived 基础介绍
运维·nginx·负载均衡
CQU_JIAKE10 小时前
4.28~4.30【Q】
linux·运维·服务器
先知后行。10 小时前
Linux 设备模型和platform平台
linux·运维·服务器
Data_Journal11 小时前
如何使用cURL更改User Agent
大数据·服务器·前端·javascript·数据库
日取其半万世不竭11 小时前
Minecraft Java版社区服务器搭建教程(Linux,适合新手)
java·linux·服务器