前言
PM2 是一款强大的 Node.js 进程管理器
学了你就会后悔为啥没早学
下面会重点讲一下它的一些命令
建议全文背诵
PM2 简介
PM2 是一个开源的 Node.js 进程管理器,它可以帮助开发者轻松地管理 Node.js 应用程序。PM2 可以自动监视我门的应用程序,并在遇到故障时自动重启它们。此外,PM2 还提供了一些有用的功能,例如内存监视和CPU 使用率监视。
安装 PM2
安装 PM2 :
npm install pm2 -g
安装完成后,可以通过以下命令检查 PM2 是否成功安装:
pm2 --version
如果成功安装,将显示 PM2 的版本信息。
【重点】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
执行效果参考图片所示:
这时候就有朋友要问了,这东西开这么一大堆有啥用???🫏🫏
答:
负载均衡:请求可以在多个进程之间分配,从而提高应用的响应速度和吞吐量(吞吐量就是并发能力)。
容错性:如果一个进程崩溃,其他的进程仍然可以继续处理请求,从而提高应用的稳定性(别崩,崩了什么都没了)。
资源利用:可以更充分地利用服务器的多核 CPU 资源,提高应用的性能。
- 小贴士:图片中的 mode 为 cluster 代表集群
管理进程
- 列出所有进程:使用以下命令查看所有由 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
后续试试康!
收摊!🫏.....🫏....🫏......🫏....🫏..🫏..🫏.........