Node.js 应用故障排查手册 —— Node.js 性能平台使用指南
发布网友
发布时间:2024-10-06 19:06
我来回答
共1个回答
热心网友
时间:2024-10-07 01:34
前一节中我们借助 Chrome devtools 实现了对线上 Node.js 应用的 CPU/Memory 问题的排查定位,但在实际生产实践中,Chrome devtools 更偏向本地开发模式,不会生成分析问题所需的 Dump 文件。因此,开发者需要在项目上额外设置 v8-profiler 和 heapmp 等工具,并通过服务导出项目实时状态。
预备章中,我们除了 CPU/Memory 的问题,还会遇到需要分析错误日志、磁盘和核心转储文件等才能定位问题的状况。因此,仅靠 Chrome devtools 显然不够。为此,我们推荐使用 Node.js 性能平台(原 AliNode),它已承载了阿里巴巴集团内部几乎所有 Node.js 应用的线上运行监控和问题排查,可在生产环境部署使用。
本节将从 Node.js 性能平台的设计架构、核心能力及最佳实践等方面,帮助开发者更好地使用这一工具解决异常指标分析和线上 Node.js 应用故障定位问题。
Node.js 性能平台由云控制台、AliNode runtime 和 Agenthub 三部分组成。具体部署步骤可查看官方文档。借助 Node.js 性能平台,可方便地实现异常指标的告警分析。在实际生产实践中,该平台主要提供三个核心能力:日志收集、性能监控和告警通知。
首先,配置合适的告警。线上应用的告警是一种保护机制,可自我发现并解决问题。部署项目后,开发者需配置合适的告警,包括错误日志、Node.js 进程 CPU/Memory 分析、核心转储和磁盘分析等。平台已预设告警策略,只需选择即可完成配置。
其次,按照告警类型进行分析。当收到告警短信时,可按照策略类型进行对应分析。以下列举五种常见问题类型:磁盘监控、错误日志、进程 CPU 高、内存泄漏和核心转储。
磁盘监控:当服务器磁盘使用超过 85% 时进行告警。收到告警后,连接服务器,使用命令查看高占用目录,删除或备份释放空间。
错误日志:收到错误日志告警后,在 Node.js 性能平台控制台找到问题实例查看异常日志,结合错误类型和栈信息进行问题定位。
进程 CPU 高:收到 Node.js 应用进程 CPU 超过阈值告警时,在控制台对应实例点击 CPU Profile 按钮,生成 3 分钟的 CPU Profile 文件,分析 JS 函数执行情况,定位代码瓶颈。
内存泄漏:收到 Node.js 应用进程堆内存超过阈值告警时,在控制台对应实例点击堆快照按钮,生成堆快照文件,分析堆空间占用情况,定位泄漏对象和代码段。
核心转储:收到服务器生成核心转储文件告警时,将文件转储到云端,通过 AliNode 定制分析,查看 Node.js 应用 Crash 时刻的线程信息和错误堆栈信息,定位问题代码。
本节介绍了 Node.js 性能平台的架构、核心能力和最佳实践,希望帮助开发者更好地使用该平台解决线上 Node.js 应用问题。