PM2 是一个用于 Node.js 应用程序的生产环境进程管理器,内置负载均衡功能。它可以让应用程序永久保持运行状态,实现无停机重载,并简化常见的系统管理任务。
在生产模式下启动应用程序非常简单:
$ pm2 start app.js
PM2 经过了超过 1800 个测试的持续验证。
官方网站:https://pm2.keymetrics.io/
支持 Linux(稳定)、macOS(稳定)和 Windows(稳定)。支持从 Node.js 12.X 开始的所有 Node.js 版本。
安装 PM2
使用 NPM:
$ npm install pm2 -g
启动应用程序
你可以像这样启动任何应用程序(Node.js、Python、Ruby、$PATH 中的二进制文件...):
$ pm2 start app.js
现在你的应用程序已经被守护进程化,受到监控并保持永久运行。
管理应用程序
一旦应用程序启动,你可以轻松管理它们:
列出所有正在运行的应用程序:
$ pm2 list
管理应用程序非常简单:
$ pm2 stop <app_name|namespace|id|'all'|json_conf>
$ pm2 restart <app_name|namespace|id|'all'|json_conf>
$ pm2 delete <app_name|namespace|id|'all'|json_conf>
查看特定应用程序的详细信息:
$ pm2 describe <id|app_name>
监控日志、自定义指标、应用程序信息:
$ pm2 monit
集群模式:Node.js 负载均衡和零停机重载
集群模式是启动 Node.js 应用程序的特殊模式,它会启动多个进程并在它们之间负载均衡 HTTP/TCP/UDP 查询。这可以显著提高整体性能(在 16 核机器上可提高 10 倍)和可靠性(在出现未处理错误时可更快地重新平衡套接字)。
在集群模式下启动 Node.js 应用程序,利用所有可用的 CPU:
$ pm2 start api.js -i <processes>
<processes>
可以是 'max'
、-1
(所有 CPU 减 1)或指定要启动的实例数量。
零停机重载
热重载允许在不停机的情况下更新应用程序:
$ pm2 reload all
容器支持
使用 pm2-runtime
命令替代 node
,在强化的生产环境中运行你的 Node.js 应用程序。
使用它非常简单:
RUN npm install pm2 -g
CMD [ "pm2-runtime", "npm", "--", "start" ]
主机监控速览栏
PM2 允许通过监控速览栏监控你的主机/服务器的重要指标。
启用主机监控:
$ pm2 set pm2:sysmonit true
$ pm2 update
基于终端的监控
直接从命令行监控所有启动的进程:
$ pm2 monit
日志管理
查看日志只需输入以下命令:
$ pm2 logs
支持标准、原始、JSON 和格式化输出。
示例:
$ pm2 logs APP-NAME # 显示 APP-NAME 的日志
$ pm2 logs --json # JSON 输出
$ pm2 logs --format # 格式化输出
$ pm2 flush # 清空所有日志
$ pm2 reloadLogs # 重新加载所有日志
要启用日志轮换,请安装以下模块
$ pm2 install pm2-logrotate
生成启动脚本
PM2 可以生成和配置启动脚本,以确保在每次服务器重启时 PM2 和你的进程都能保持运行。
支持的初始化系统:systemd、upstart、launchd、rc.d
# 生成启动脚本
$ pm2 startup
# 在服务器重启后保存进程列表
$ pm2 save
# 移除启动脚本
$ pm2 unstartup
更新 PM2
# 安装最新版本的 PM2
$ npm install pm2@latest -g
# 保存进程列表,退出旧版 PM2 并恢复所有进程
$ pm2 update
PM2 更新是无缝的
PM2+ 监控
如果你使用 PM2 管理应用程序,PM2+ 可以轻松监控和管理跨服务器的应用程序。
欢迎试用:
提前感谢,我们希望你喜欢 PM2!
更新日志
贡献者
许可证
PM2 根据 GNU Affero 通用公共许可证 3.0(AGPL 3.0)的条款提供。 对于其他许可证,请联系我们。