pm2急速入门

447 阅读3分钟

前言

PM2 是一款强大的 Node.js 进程管理器

学了你就会后悔为啥没早学

下面会重点讲一下它的一些命令

建议全文背诵

PM2 简介

PM2 是一个开源的 Node.js 进程管理器,它可以帮助开发者轻松地管理 Node.js 应用程序。PM2 可以自动监视我门的应用程序,并在遇到故障时自动重启它们。此外,PM2 还提供了一些有用的功能,例如内存监视CPU 使用率监视

安装 PM2

安装 PM2 :

npm install pm2 -g

安装完成后,可以通过以下命令检查 PM2 是否成功安装:

pm2 --version

如果成功安装,将显示 PM2 的版本信息。

image.png

【重点】PM2 常用命令【重点】

启动应用

  • 基本启动:使用以下命令启动你的 Express 应用:
pm2 start app.js

这里,app.js 是你的 Express 应用的入口文件。

  • 指定应用名称:可以通过 --name 参数为应用指定一个名称:
pm2 start app.js --name "my-app"
  • 启用文件监听:使用 --watch 参数,PM2 会监视文件更改并自动重启应用:
pm2 start app.js --name "my-app" --watch
  • 忽略特定目录:如果不想监视某些目录(如 node_modules,不监视这种大文件有助于节省资源),可以使用 --ignore-watch 参数:
pm2 start app.js --name "my-app" --watch --ignore-watch="node_modules"
  • 集群模式:使用 -i max 参数,PM2 会利用所有可用的 CPU 核心来运行应用,提高性能:
pm2 start app.js -i max

执行效果参考图片所示:

image.png

这时候就有朋友要问了,这东西开这么一大堆有啥用???🫏🫏

答:

  1. 负载均衡:请求可以在多个进程之间分配,从而提高应用的响应速度和吞吐量(吞吐量就是并发能力)。

  2. 容错性:如果一个进程崩溃,其他的进程仍然可以继续处理请求,从而提高应用的稳定性(别崩,崩了什么都没了)。

  3. 资源利用:可以更充分地利用服务器的多核 CPU 资源,提高应用的性能。

  • 小贴士:图片中的 modecluster 代表集群

管理进程

  • 列出所有进程:使用以下命令查看所有由 PM2 管理的进程:
pm2 list
  • 查看进程详情:使用 pm2 describe 命令查看特定进程的详细信息:
pm2 describe <app_name|id>
  • 停止进程:停止特定的应用程序:
pm2 stop <app_name|id>
  • 重启进程:重启特定的应用程序:
pm2 restart <app_name|id>
  • 删除进程:从 PM2 列表中删除指定的应用程序:
pm2 delete <app_name|id>

日志管理

  • 查看日志:查看应用的所有日志输出:
pm2 logs
  • 清空日志:使用以下命令清空所有日志:
pm2 flush

监控应用

  • 实时监控:使用以下命令实时监控应用的 CPU 和内存使用情况:
pm2 monit

保存与恢复

  • 保存当前进程列表:使用以下命令保存当前的进程列表,以便在系统重启后自动恢复:
pm2 save
  • 恢复保存的进程:手动恢复保存的进程状态:
pm2 resurrect

PM2 与 Express.js 的最佳实践

使用配置文件

对于复杂的项目,可以使用 PM2 的配置文件(如 ecosystem.config.js)来管理应用。例如,以下是一个简单的配置文件示例:

module.exports = {
  apps: [
    {
      name: "my-app",
      script: "app.js",
      instances: "max",
      exec_mode: "cluster",
      watch: true,
      ignore_watch: ["node_modules"],
      env: {
        NODE_ENV: "development",
      },
      env_production: {
        NODE_ENV: "production",
      },
    },
  ],
};

然后,可以通过以下命令启动应用:

pm2 start ecosystem.config.js --env production

零停机重启

在生产环境中,使用 pm2 reload 命令可以实现零停机重启:

pm2 reload <app_name|id>

这确保了在重启过程中,应用始终可用。

还有下面这些 我就一并写了

pm2 delete all 删除全部进程

总结

目前就是还没在生产环境用过PM2

后续试试康!

收摊!🫏.....🫏....🫏......🫏....🫏..🫏..🫏.........