跳到主要内容

perf_hooks

2024年12月26日
柏拉文
越努力,越幸运

一、perf_hooks


二、perf_hooks.createHistogram([options])


三、perf_hooks.monitorEventLoopDelay([options])


3.1 认识

perf_hooks.monitorEventLoopDelay([options])Node.jsperf_hooks 模块提供的一个 API,用于监控事件循环(Event Loop)的延迟(lag)。通过使用这个 API,你可以实时获取事件循环的延迟数据,帮助你了解 Node.js 应用的性能瓶颈以及响应能力。

monitorEventLoopDelay 允许你监控事件循环的延迟,返回的延迟数据是以纳秒为单位的,这有助于开发者了解事件循环的负载情况,并发现可能的性能问题。

3.2 语法

const { monitorEventLoopDelay } = require('perf_hooks');

// 创建事件循环延迟监控器
const histogram = monitorEventLoopDelay({ resolution: 1 });

// 启动监控
histogram.enable();

// 定期报告事件循环延迟
setInterval(() => {
console.log(`事件循环延迟:
最小延迟: ${histogram.min} 纳秒
最大延迟: ${histogram.max} 纳秒
平均延迟: ${histogram.mean} 纳秒
标准差: ${histogram.stddev} 纳秒
50th 百分位: ${histogram.percentile(50)} 纳秒
90th 百分位: ${histogram.percentile(90)} 纳秒
99th 百分位: ${histogram.percentile(99)} 纳秒
`);

// 重置监控数据
histogram.reset();
}, 1000);
  • options(可选):配置选项,包含了事件循环延迟监控的一些参数。

  • resolution(可选):指定事件循环延迟采样的精度,单位为纳秒。默认值是 1,表示 1 纳秒的分辨率。可以根据需求设置更高的精度来获取更细粒度的延迟数据。

  • 返回值:该函数返回一个 Histogram(直方图)对象。该对象具有多种方法用于获取事件循环延迟的统计数据,包括延迟的最小值、最大值、平均值等。

    • min:事件循环的最小延迟,单位是纳秒。

    • max:事件循环的最大延迟,单位是纳秒。

    • mean:事件循环的平均延迟,单位是纳秒。

    • stddev:事件循环延迟的标准差,单位是纳秒。

    • percentile(percentile):获取指定百分位数(如 50 表示中位数)的延迟值。

    -reset():重置监控数据。