收集 HTTP/2 性能指标


🌐 Collecting HTTP/2 performance metrics

性能监视器 API 可用于收集每个 Http2SessionHttp2Stream 实例的基本性能指标。

🌐 The Performance Observer API can be used to collect basic performance metrics for each Http2Session and Http2Stream instance.

import { PerformanceObserver } from 'node:perf_hooks';

const obs = new PerformanceObserver((items) => {
  const entry = items.getEntries()[0];
  console.log(entry.entryType);  // prints 'http2'
  if (entry.name === 'Http2Session') {
    // Entry contains statistics about the Http2Session
  } else if (entry.name === 'Http2Stream') {
    // Entry contains statistics about the Http2Stream
  }
});
obs.observe({ entryTypes: ['http2'] });const { PerformanceObserver } = require('node:perf_hooks');

const obs = new PerformanceObserver((items) => {
  const entry = items.getEntries()[0];
  console.log(entry.entryType);  // prints 'http2'
  if (entry.name === 'Http2Session') {
    // Entry contains statistics about the Http2Session
  } else if (entry.name === 'Http2Stream') {
    // Entry contains statistics about the Http2Stream
  }
});
obs.observe({ entryTypes: ['http2'] });

PerformanceEntryentryType 属性将等于 'http2'

🌐 The entryType property of the PerformanceEntry will be equal to 'http2'.

PerformanceEntryname 属性将等于 'Http2Stream''Http2Session'

🌐 The name property of the PerformanceEntry will be equal to either 'Http2Stream' or 'Http2Session'.

如果 name 等于 Http2StreamPerformanceEntry 将包含以下附加属性:

🌐 If name is equal to Http2Stream, the PerformanceEntry will contain the following additional properties:

  • bytesRead <number> 接收到的此 Http2StreamDATA 帧字节数。
  • bytesWritten <number>Http2Stream 发送的 DATA 帧字节数。
  • id <number> 关联 Http2Stream 的标识符
  • timeToFirstByte <number>PerformanceEntrystartTime 到接收到第一个 DATA 帧所经过的毫秒数。
  • timeToFirstByteSent <number>PerformanceEntrystartTime 到发送第一个 DATA 帧所经过的毫秒数。
  • timeToFirstHeader <number>PerformanceEntrystartTime 到接收到第一个响应头经过的毫秒数。

如果 name 等于 Http2SessionPerformanceEntry 将包含以下附加属性:

🌐 If name is equal to Http2Session, the PerformanceEntry will contain the following additional properties:

  • bytesRead <number>Http2Session 接收到的字节数。
  • bytesWritten <number> 发送到此 Http2Session 的字节数。
  • framesReceived <number> Http2Session 接收到的 HTTP/2 帧的数量。
  • framesSent <number> Http2Session 发送的 HTTP/2 帧的数量。
  • maxConcurrentStreams <number>Http2Session 生命周期中可以同时打开的最大流数。
  • pingRTT <number> 自发送 PING 帧到接收到其确认所经过的毫秒数。仅在已在 Http2Session 上发送过 PING 帧时才会出现。
  • streamAverageDuration <number> 所有 Http2Stream 实例的平均持续时间(以毫秒为单位)。
  • streamCount <number> Http2Session 处理的 Http2Stream 实例数量。
  • type <string> 可以是 'server''client',用于标识 Http2Session 的类型。