帮助手册

Node VM(NVM)

APM Insight Node.js 代理从 Node.js Chrome V8 中收集关键指标数据。这些指标让您深入了解 Node.js VM 的行为,并帮助您提升应用程序的性能。代理还会收集 CPU 指标,通常与垃圾回收(GC)指标一起进行分析。

原生模块及前提条件

Node.js 需要一个额外的原生模块,才能收集与垃圾回收和事件循环数据相关的 Node.js VM 指标时间片数据。但内存和 CPU 使用率无论是否安装额外的原生模块,均可正常收集。

注意

  • 安装 Node.js 代理时(v3.0.0 或更高版本),原生模块会自动安装。
  • 安装过程中,原生模块首先尝试在目标机器上从源代码编译构建。如果构建失败,Node.js 会向控制台打印堆栈跟踪信息,可忽略该信息。
  • 如果原生模块构建成功,您可以看到所有指标,包括垃圾回收、内存使用、事件循环数据和 CPU 使用率。如果构建失败,则只能看到内存和 CPU 相关指标。

安装 Node.js 原生模块的前提条件包括:

请按照 node-gyp 包的说明,在您的部署平台上编译原生模块。

平台 推荐的 Python 版本 环境要求
Unix/Linux v3.7、v3.8、v3.9 或 v3.10 Make、C/C++ 编译器(如 GCC)
macOS v3.7、v3.8、v3.9 或 v3.10 Xcode 命令行工具
Windows v3.7、v3.8、v3.9 或 v3.10 Visual C++ 构建环境
注意

请注意,以下三项基本要求缺一不可,否则构建将失败,客户端将无法获得 GC 和事件循环指标。

  1. Python
  2. 编译器
  3. NPX - 从 NPM 5.2.0 起,NPX 已预置捆绑。低于该版本时,必须单独安装 NPX。

查看 NVM 指标

通过 NVM 指标,获取有用的运行时数据,用于排查性能问题并监控应用程序的健康状况。

在客户端查看 NVM 指标:

  1. 登录 Site24x7 Web 客户端。
  2. 导航至 APM > 您的 Node.js 应用程序 > 点击 Node VM 标签页。
  3. 选择需要查看指标的时间范围。

您将获得图表和指标,可用于排查性能问题。

示例:

  • 当应用程序开始使用更多对象时,内存使用量会增加,垃圾回收(GC)运行频率也会提高。由于 GC 所用时间增加,CPU 使用率也会随之上升。
  • 过多的同步代码执行会导致 CPU 使用率升高,这将在每次 tick 最大 CPU 时间图表中出现峰值。

使用图表进行性能推断

在右上角,您还可以选择需要查看指标的时间范围。

 

GC 暂停时间
该图表描述了垃圾回收所花费的时间。GC 时间出现峰值通常表示存在问题。

GC 暂停频率
该图表显示每分钟执行的 GC 次数。

内存使用量
该图表显示 Node.js 进程消耗的内存量。

参数 描述
non_heap (MB) V8 堆外数据占用的内存(例如缓冲区或套接字)。
free (MB) V8 为内存池预留的内存量。此内存未被主动使用,但 V8 会根据需要从中自由分配更多内存。
used (MB) V8 正在使用的内存量(例如 JavaScript 对象)。


CPU 使用率
该图表显示 Node.js 进程的 CPU 使用率。

参数 描述
user (%) 执行用户代码所用时间占挂钟时间的比例。
system (%) 代表 Node.js 进程在系统内核中执行所用时间占挂钟时间的比例。

每分钟事件循环 Tick 数
该图表显示每分钟事件循环 tick 的次数。一个 tick 是事件循环的一次轮转,在此期间执行所有已就绪的函数。

注意

Node.js 在每次事件循环轮转期间等待待处理的 I/O 操作完成。当收到 I/O 事件时,事件循环会执行所有相关的回调函数。因此,每分钟的 tick 次数对应 I/O 事件发生的频率。

每次 tick 最大 CPU 时间
该图表显示每分钟单次 tick 所花费的最长时间。这有助于识别异常长的事件循环 tick,这表明存在较长时间的同步代码执行。

本文档对您有帮助吗?

您愿意帮助我们改进文档吗?请告诉我们哪些方面可以做得更好。


很抱歉本文档未能让您满意。我们希望了解可以从哪些方面改进您的体验。


感谢您抽出时间分享反馈。我们将利用您的反馈来改进在线帮助资源。

短链接已复制!