如何使用pm2管理Node.js应用?

常见问题

如何使用pm2管理Node.js应用?

2025-04-12 10:56


全面指南:如何使用

                                            

全面指南:如何使用PM2高效管理Node.js应用

在Node.js应用开发中,进程管理是一个不可忽视的重要环节。本文将详细介绍如何使用PM2这一强大的进程管理工具来优化你的Node.js应用部署体验。

为什么选择PM2?

PM2是Node.js生态中最受欢迎的进程管理器之一,具有以下显著优势:

  • 应用守护:自动重启崩溃的应用
  • 负载均衡:支持集群模式运行多实例
  • 日志管理:集中式日志收集和轮转
  • 监控功能:实时查看应用状态
  • 零停机重启:支持热重载不中断服务

PM2安装与基本使用

1. 安装PM2

通过npm全局安装PM2非常简单:

npm install pm2 -g

2. 启动应用

使用PM2启动Node.js应用:

pm2 start app.js

或者指定应用名称:

pm2 start app.js --name "myApp"

3. 常用命令

命令 功能
pm2 list 查看运行中的进程列表
pm2 logs 查看应用日志
pm2 stop [id/name] 停止指定应用
pm2 restart [id/name] 重启指定应用
pm2 delete [id/name] 从PM2列表中移除应用

高级配置与优化

1. 使用配置文件

创建ecosystem.config.js文件进行更精细的配置:

module.exports = {
  apps: [{
    name: "app",
    script: "./app.js",
    instances: "max",
    exec_mode: "cluster",
    autorestart: true,
    watch: false,
    max_memory_restart: "1G",
    env: {
      NODE_ENV: "development"
    },
    env_production: {
      NODE_ENV: "production"
    }
  }]
}

2. 集群模式

利用多核CPU优势,启动集群模式:

pm2 start app.js -i 4

或者使用"max"自动根据CPU核心数启动实例

3. 日志管理

PM2默认会将日志存储在~/.pm2/logs目录下,可以通过以下命令管理日志:

pm2 logs --lines 200  # 查看最近200行日志
pm2 flush            # 清空所有日志
pm2 install pm2-logrotate  # 安装日志轮转模块

4. 开机自启

确保服务器重启后应用自动启动:

pm2 startup  # 生成启动脚本
pm2 save     # 保存当前应用列表
pm2 resurrect # 恢复之前保存的应用

监控与性能优化

1. 实时监控

使用内置监控面板:

pm2 monit

2. 性能指标

获取详细性能数据:

pm2 show [id/name]

3. Web仪表板

PM2 Plus提供更强大的Web监控功能:

pm2 plus

常见问题解决方案

1. 应用频繁重启

可能原因:内存泄漏导致超出内存限制

解决方案:增加max_memory_restart值或修复内存问题

2. 端口冲突

可能原因:多个实例尝试绑定相同端口

解决方案:使用环境变量动态分配端口

3. 日志文件过大

解决方案:安装pm2-logrotate模块自动压缩和删除旧日志

总结

PM2作为Node.js应用的瑞士军刀,能显著提升应用的可靠性和管理效率。通过本文的介绍,你应该已经掌握了从基础到高级的PM2使用技巧。合理配置PM2能让你的Node.js应用在生产环境中更加稳定可靠。

建议进一步探索PM2的插件系统,如pm2-logrotate、pm2-intercom等,以获得更强大的功能扩展。


标签:
  • Node.js
  • PM2
  • 进程管理
  • 莱卡云