PM2 是一款优秀的 Node.js 进程管理工具,可以帮助我们快速地启动、停止、重启 Node.js 应用程序,并提供了一些有用的功能,如进程监控、负载均衡、自动重启等。在使用 PM2 进行应用程序管理时,我们需要时刻关注进程的健康状态,及时排查问题,确保应用程序的稳定运行。本文将介绍 PM2 如何进行进程健康检查,快速排查问题,以及如何优化进程管理。
进程健康检查
PM2 提供了多种方式来检查进程的健康状态,包括命令行工具、Web 界面、API 等。下面介绍其中一些常用的方式。
命令行工具
可以使用 pm2 list
命令查看当前所有进程的状态。输出结果包括进程 ID、进程名称、状态、CPU 占用率、内存占用率等信息。
┌────┬─────────┬──────────┬───────┬────────┬───────────┐ │ id │ name │ mode │ status │ cpu │ memory │ ├────┼─────────┼──────────┼───────┼────────┼───────────┤ │ 0 │ app │ cluster │ online │ 0% │ 16.6 MB │ │ 1 │ app │ cluster │ online │ 0% │ 16.7 MB │ └────┴─────────┴──────────┴───────┴────────┴───────────┘
可以使用 pm2 show <id|name>
命令查看指定进程的详细信息,包括环境变量、启动命令、运行路径、日志路径等。
-- -------------------- ---- ------- -------------------------------------------------------------------------- - ------ - ------ - - ---- - --- - - --------- - ------- - - ------- - ----- - - --- - ----- - - -------- - - - - ------ - -- --- - - ------ ---- - --------------- - - ------ ---- - --- - - ----- --- ---- - -------------------------------- - - --- --- ---- - ------------------------------ - - --- ---- - ---------------------------- - - ----------- - ---- - - ----------- ---- - --- - - ------ -- - - - - ---- --- - -------- - - ---- ---- - ------------ - - ------- ------- - ------- - - ---- --- - ---------- - - ----- - ------ - - - - -------- -------- - - - - ------- -- - ------------------------ - - ---- ------- - ------------------------ - - ---- - - --------- ------------ - - --------------------------------------------------------------------------
可以使用 pm2 logs <id|name>
命令查看指定进程的日志输出,包括标准输出和标准错误输出。
2021-01-01T00:00:00.000Z [0:0] [INFO] Starting app in cluster mode... 2021-01-01T00:00:01.000Z [0:1] [INFO] Worker 1 started. 2021-01-01T00:00:02.000Z [0:2] [INFO] Worker 2 started.
Web 界面
可以使用 pm2 web
命令启动 PM2 Web 界面,可以在浏览器中查看所有进程的状态、日志输出、运行指标等信息。在 Web 界面中,可以方便地进行进程管理、监控和调试,提高了管理效率和可视化程度。
API
可以使用 PM2 提供的 API 进行进程状态查询、日志输出、进程管理等操作,可以方便地集成到自动化脚本、监控系统等中。
-- -------------------- ---- ------- ----- --- - --------------- ----------------- -- - -- ----- - ------------------- ---------------- - -------------- ----- -- - -- ----- - ------------------- ---------------- - ------------------ ----------------- --- ---
快速排查问题
在 PM2 中,我们可以通过日志输出、错误堆栈、进程状态等信息来快速排查问题。下面介绍一些常用的工具和技巧。
日志输出
在 PM2 中,我们可以使用 console.log
、console.error
等函数输出日志信息,可以方便地查看应用程序的运行状态和错误信息。
console.log('Hello, world!'); console.error('Oops, something went wrong!');
在 PM2 中,日志输出会被分为标准输出和标准错误输出,可以分别查看。
错误堆栈
在 PM2 中,如果应用程序抛出了未处理的异常,会在错误日志中输出错误堆栈信息,可以根据堆栈信息定位错误所在位置。
function foo() { throw new Error('Oops!'); } foo();
错误日志输出如下:
-- -------------------- ---- ------- ------------------------ ----- ------- -------- ---------- ------------------------ ----- ------- ------ ----- -- --- --------------------- -- ------------------ --------------------- -- --------------- --------------------------------------- -- ----------------------------- --------------------------------------- -- ----------- --------------------------------------- -- ------------- --------------------------------------- -- --------------------- -------------------------------------- -- ----------------------- --------------------------------------- -- ------- ----------------------------------- -- ------------------- ----------------------------------
进程状态
在 PM2 中,我们可以通过命令行工具、Web 界面、API 等方式查看进程的状态,包括进程 ID、进程名称、状态、CPU 占用率、内存占用率等信息。如果进程处于异常状态,可以通过重启进程、查看日志等方式来恢复正常状态。
进程管理优化
在 PM2 中,我们可以通过一些优化技巧来提高进程管理的效率和稳定性。
自动重启
在 PM2 中,可以通过设置 --watch
参数来监控源代码文件的变化,当文件发生变化时,会自动重启应用程序,以更新代码和配置。
pm2 start app.js --watch
负载均衡
在 PM2 中,可以通过设置 --instances
参数来启动多个进程实例,以实现负载均衡和高可用。可以根据 CPU 核心数、内存大小等因素来设置进程实例数,以充分利用计算资源。
pm2 start app.js --instances 4
进程监控
在 PM2 中,可以通过 Web 界面、API 等方式进行进程监控,可以查看进程状态、运行指标、日志输出等信息。可以设置报警规则、性能指标等,以及时发现和解决问题。
示例代码
下面是一个简单的 Node.js 应用程序,用于演示 PM2 进程管理的基本用法。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - ------------------ ---------------- --------------- --------------- ----------- --- ------------------- -- -- - ------------------- ------- -- ------------------------- ---
可以使用以下命令启动该应用程序。
pm2 start app.js --name app
可以使用以下命令查看该应用程序的状态。
pm2 list pm2 show app
可以使用以下命令查看该应用程序的日志输出。
pm2 logs app
可以使用以下命令停止该应用程序。
pm2 stop app
结论
PM2 是一款非常优秀的 Node.js 进程管理工具,提供了丰富的功能和工具,可以方便地进行进程管理、监控和调试。在使用 PM2 进行应用程序管理时,我们需要时刻关注进程的健康状态,及时排查问题,确保应用程序的稳定运行。同时,我们可以通过一些优化技巧来提高进程管理的效率和稳定性,如自动重启、负载均衡、进程监控等。希望本文能够对读者了解 PM2 进程健康检查和优化提供帮助和指导。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675baf69a4d13391d8f6b66c