Skip to content

pm2

PM2是一个流行的Node.js应用程序的进程管理器,可以帮助开发者在生产环境中高效地启动、停止、监控和维护应用程序。以下是PM2的一些主要用法和用途:

用途

  • 负载均衡: PM2可以自动重启崩溃的应用程序,并且可以通过其内置的负载均衡器来利用多核系统。
  • 零停机重启: PM2支持无停机重启。
  • 状态监控: PM2提供了一个简单的监控界面来查看应用程序的资源使用情况。
  • 日志管理: PM2可以帮助开发者管理和保持应用程序日志的清晰。
  • 启动脚本: PM2可以生成启动脚本,以确保应用程序在服务器重启后自动启动。

用法

  1. 安装PM2:

    sh
    npm install pm2 -g

    使用npm全局安装PM2,这样可以在任何地方使用PM2命令。

  2. 启动应用程序:

    sh
    pm2 start app.js

    使用pm2 start命令启动一个Node.js应用程序。app.js是你的Node.js应用程序的入口文件。

  3. 列出运行的进程:

    sh
    pm2 list

    显示当前由PM2管理的所有进程的状态。

  4. 监控应用程序:

    sh
    pm2 monit

    实时监控应用程序的CPU和内存使用情况。

  5. 重启应用程序:

    sh
    pm2 restart <app_name_or_id>

    重启一个或多个应用程序。

  6. 停止应用程序:

    sh
    pm2 stop <app_name_or_id>

    停止一个或多个应用程序。

  7. 删除应用程序:

    sh
    pm2 delete <app_name_or_id>

    从PM2列表中删除一个或多个应用程序。

  8. 日志管理:

    sh
    pm2 logs

    查看所有应用程序的日志输出。

  9. 配置文件: 使用ecosystem.config.js文件来配置应用程序的启动参数、环境变量等。

进阶

  1. 负载均衡(Cluster Mode): PM2的集群模式允许你轻松地在多核CPU系统上进行负载均衡。它可以启动多个Node.js实例(通常与CPU核心数相同),并自动分配负载和管理进程。这样可以提高应用程序的性能和可靠性。要启动集群模式,可以使用以下命令:

    sh
    pm2 start app.js -i max

    -i max选项告诉PM2自动检测CPU核心数并启动相应数量的实例。你也可以指定一个具体的实例数目。

  2. 日志管理: PM2提供了强大的日志管理功能,可以帮助你跟踪所有由PM2管理的应用程序的输出。默认情况下,PM2会将标准输出(stdout)和标准错误(stderr)记录到日志文件中。你可以使用以下命令查看日志:

    sh
    pm2 logs

    你也可以查看特定应用程序的日志:

    sh
    pm2 logs <app_name_or_id>

    PM2还允许你控制日志文件的大小,通过设置日志轮转来防止日志文件无限制地增长。使用pm2 logrotate模块可以实现这一功能。

  3. 监控: PM2内置了一个监控工具,可以实时查看应用程序的性能指标,如CPU和内存使用情况。使用以下命令启动监控面板:

    sh
    pm2 monit

    此外,PM2 Plus(或PM2.io)是PM2的高级监控和管理平台,提供了更多高级功能,如远程监控、自定义指标、警报系统等。

  4. 进程管理: PM2允许你管理应用程序的生命周期,包括启动、重启、停止和删除进程。你可以设置应用程序在崩溃时自动重启,或者在文件变化时重启(使用--watch选项)。

  5. 配置文件(Ecosystem File): PM2支持使用ecosystem.config.js文件来配置你的应用程序。这个文件可以定义多个应用程序的配置,包括环境变量、日志文件路径、实例数等。这使得部署和管理Node.js应用程序更加方便和可靠。

  6. 启动脚本: PM2可以帮助你生成系统启动脚本,以确保在服务器重启后,你的应用程序能够自动启动。使用以下命令生成启动脚本:

    sh
    pm2 startup
  7. 部署工具: PM2还包含了一个简单的部署系统,可以帮助你更新服务器上的应用程序。你可以在ecosystem.config.js文件中配置部署任务,并使用pm2 deploy命令来执行部署。

更多详细信息和高级配置,建议查阅PM2官方文档

Released under the MIT License.