在 Node.js 项目中,经常需要运行多个进程来处理请求,例如 Web 服务器、消息队列等。这时候,我们需要一个进程管理工具来监控和管理这些进程,能够自动重启、监控 CPU 和内存使用情况等。而 PM2 就是一个非常好用的进程管理工具。
PM2 简介
PM2 可以在后台运行多个 Node.js 进程,并提供以下功能:
- 自动重启:当进程崩溃或者代码变化时,PM2 自动重启进程
- 集中日志:所有进程的日志输出到同一个日志文件中,方便查看和分析
- 负载均衡:PM2 可以使用多个进程同时运行同一个 Node.js 应用程序,通过负载均衡分配请求,提高系统的并发处理能力
- 监控:PM2 可以监控进程 CPU 和内存的使用情况,并通过事件触发器进行告警和自动重启
安装和使用
首先需要全局安装 PM2:
npm install -g pm2
然后,在项目的根目录下运行以下命令启动一个 Node.js 进程:
pm2 start app.js
这样就可以将 app.js 启动到后台,并保证当 app.js 发生异常崩溃时,PM2 会自动重启:
pm2 start app.js --name myapp
如果需要为进程指定一个名称,可以通过 --name 选项来指定。
如果需要同时运行多个进程,可以通过以下命令来指定要启动的进程数量:
pm2 start app.js -i max
这样 PM2 会将进程数量设置为 CPU 数量的最大值,以提高系统的处理能力。
如果需要停止某个进程,可以使用以下命令:
pm2 stop myapp
如果需要查看所有进程的列表,可以使用以下命令:
pm2 list
监控和告警
为了监控 Node.js 进程的运行情况,PM2 提供了一个内置的 Web 界面。可以通过以下命令启动:
pm2 web
在浏览器中访问 http://localhost:9615 可以查看到监控界面。
此外,PM2 还提供了事件触发器功能,可以通过配置触发器来在进程 CPU 或内存占用超过一定阈值时触发告警和自动重启。以下是一个 CPU 占用率超过 80% 触发告警和重启的配置示例:
pm2 start app.js --name myapp --max-memory-restart 1G --max-restarts 10 --watch --ignore-watch='[ "node_modules", "logs" ]' --log /path/to/logs/myapp.log pm2 trigger myapp cpu 80 pm2 trigger myapp mem 80
这样当 myapp 进程的 CPU 或内存占用超过 80% 时,PM2 会触发相应的事件,执行指定的动作。
结论
通过使用 PM2 进程管理工具,可以方便地运行和管理 Node.js 应用程序,提供自动重启、负载均衡、日志管理、监控告警等功能。在实际项目中,PM2 是一个非常实用的工具,值得推荐。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66ffde00485b53fc16b5e0e6