用途
PM2 是面向 Node.js 的生产级进程管理器,内置负载均衡能力,主要用于在生产环境中部署、监控并自动重启 Node 应用。
安装
npm install -g pm2
主要能力
- 启动应用:可直接启动脚本,也可通过 npm 启动。
- 进程管理:列出进程、重启、停止、删除进程,并支持零停机重载(reload)。
- 日志查看:查看全部日志或指定应用日志,并可指定显示行数。
- 监控与信息:查看应用详情,进行实时监控(monit)。
- 开机自启:保存当前进程列表并生成启动脚本。
- 集群与资源控制:支持集群模式(使用全部 CPU)、内存超限自动重启、定时重启(cron)。
- 文件变更监听:通过 --watch 在文件变化时重启。
使用方式
快速启动应用:
# Start an app
pm2 start app.js
pm2 start npm --name "my-app" -- start
pm2 start "npm run start" --name my-app
指定端口或环境变量:
pm2 start npm --name "my-app" -- start -- --port 3000
PORT=3000 pm2 start npm --name "my-app" -- start
常用命令:
# List processes
pm2 list
pm2 ls
# Logs
pm2 logs # All logs
pm2 logs my-app # Specific app
pm2 logs --lines 100 # Last 100 lines
# Control
pm2 restart my-app
pm2 stop my-app
pm2 delete my-app
pm2 reload my-app # Zero-downtime reload
# Info
pm2 show my-app
pm2 monit # Real-time monitor
开机自启:
# Save current process list
pm2 save
# Generate startup script (run the output command with sudo)
pm2 startup
# Example output - run this:
# sudo env PATH=$PATH:/opt/homebrew/bin pm2 startup launchd -u username --hp /Users/username
Next.js / 生产构建:
# Build first
npm run build
# Start production server
pm2 start npm --name "my-app" -- start
# Or with ecosystem file
pm2 start ecosystem.config.js
Ecosystem 配置文件(ecosystem.config.js):
module.exports = {
apps: [{
name: 'my-app',
script: 'npm',
args: 'start',
cwd: '/path/to/app',
env: {
NODE_ENV: 'production',
PORT: 3000
}
}]
}
常用参数:
| 参数 | 说明 |
|---|---|
| --name | 进程名称 |
| --watch | 文件变化时重启 |
| -i max | 集群模式(使用全部 CPU) |
| --max-memory-restart 200M | 内存超限自动重启 |
| --cron "0 * * * *" | 定时重启 |
清理:
pm2 delete all # Remove all processes
pm2 kill # Kill PM2 daemon
pm2 unstartup # Remove startup script
适用场景
适用于在生产环境中部署、监控和自动重启 Node.js 应用,包括需要零停机重载、集群负载均衡、内存超限自动重启、定时重启或开机自启的场景,也适用于 Next.js 等需要先构建再启动生产服务器的项目。
限制
资料未提供关于收费、价格、平台支持范围、性能效果或具体版本要求的信息,暂未提供。