perf_hooks
2024年12月26日
一、perf_hooks
二、perf_hooks.createHistogram([options])
三、perf_hooks.monitorEventLoopDelay([options])
3.1 认识
perf_hooks.monitorEventLoopDelay([options])
是 Node.js
的 perf_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()
:重置监控数据。 -