PM2-NodeJS进程守护程序
目录
1. PM2 是什么?
PM2(Process Manager 2)是目前最主流的 Node.js 生产环境进程管理器。它自带负载均衡、日志管理、性能监控和热重载功能。
如果你只是用 node app.js 启动程序,一旦代码报错或者服务器重启,你的服务就直接挂了。PM2 的存在就是为了确保你的程序7x24 小时永不掉线 。
2. 安装步骤
PM2 是一个全局的 npm 包,安装非常简单:
# 使用 npm 安装
npm install pm2@latest -g
# 或者使用 yarn
yarn global add pm2安装完成后,输入 pm2 -v 能看到版本号就说明成功了。
3. 基础使用教程
启动应用
最简单的启动方式:
pm2 start app.js为了方便管理,通常我们会给进程起个名字:
pm2 start app.js --name "my-server"自动保存与开机自启
这是最实用的功能。配置后,即便服务器断电重启,你的服务也会自动拉起:
-
保存当前列表:
pm2 save -
生成自启脚本:
pm2 startup(根据提示拷贝并执行那行生成的命令即可,新版本可能不需要再执行额外命令)。
常用管理命令
-
查看状态:
pm2 list(或者pm2 status),查看所有进程的 CPU 和内存占用。 -
停止/重启:
pm2 stop [Name/ID]或pm2 restart [Name/ID]。 -
删除进程:
pm2 delete [Name/ID](停止并从列表中移除)。 -
实时日志:
pm2 logs(调试神技,能看到控制台输出的所有信息)。
4. 进阶神技
负载均衡模式 (Cluster Mode)
如果你的服务器是多核 CPU,你可以让 PM2 自动开启多个实例来分担压力:
Bash
# 启动 4 个实例
pm2 start app.js -i 4
# 或者根据 CPU 核心数自动分配
pm2 start app.js -i max5. 最佳实践:使用配置文件
在项目根目录创建一个 ecosystem.config.js,以后只需要执行 pm2 start 就能按配置启动了:
JavaScript
module.exports = {
apps : [{
name: "my-app",
script: "./app.js",
instances: "max", // 开启集群模式
exec_mode: "cluster",
watch: true, // 监听代码变化自动重启
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}]
}