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.js 的 deploy 字段配置,或直接用 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?)
  • 是开发环境还是准备上线?
  • 有没有遇到具体报错?

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

要不要试试看?🙂

相关推荐
echome88817 分钟前
Linux 定时任务:crontab 写法与常见失效原因
linux·运维·网络·定时任务·crontab
老约家的可汗18 分钟前
Linux开发三件套:make、git、gdb 入门指南
linux·运维·服务器
从琳开始98930 分钟前
从Socket到TCP回显服务器:Java网络编程完整指南
java·服务器·网络·tcp/ip·java-ee
云-缩影1 小时前
做微信小程序,自建服务器还是用云托管:技术选型对比
服务器·微信小程序·小程序
分布式存储与RustFS1 小时前
可观测性数据落进对象存储:Proscia 案例拆解与 ClickHouse 自托管配置
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
土星云SaturnCloud1 小时前
基于边缘计算与AI视觉的智慧街面治理方案:架构设计与场景落地
服务器·人工智能·ai·边缘计算
无足鸟ICT1 小时前
【RHCA+】dstat命令(监控系统资源)
linux·服务器
方便面不加香菜1 小时前
Docker Image-- 镜像命令详解与使用示例
运维·docker·容器
时空无限2 小时前
ubuntu 26.04 sudo 连不上主机卡住然后失败问题处理
linux·服务器·ubuntu
天远API2 小时前
零信任架构实战:基于天远劳动仲裁信息查询构建自动化灵活用工劳务派遣人员准入背调网关
运维·人工智能·架构·自动化