发布时间: 2026年11月4日更新时间: 2026年11月4日

WebSocket 代理IP 测试报告应该记录哪些指标

一份只能写「连接成功、延迟正常」的 WebSocket 测试报告,问题不在结论而在字段。把报告拆成环境、连接、业务三层,逐项给出字段、单位、采集方式与用途,配合握手分段、断连码分布、重连次数与 RTT 分位数,形成可直接落表、可复核的模板。

一份只能写"连接成功、延迟正常"的 WebSocket 报告,问题在于缺少可复核字段。本文按环境、连接、业务三层列出报告项,并注明采集工具与可观测边界。浏览器标准 WebSocket 事件通常不能直接提供全部握手分段、原始响应头或每一跳耗时;拿不到的字段应标为 N/A 并说明原因。

WebSocket 代理测试报告应该分哪三层记录

  • 环境层:这次测试在什么条件下发生。地区、出口 IP 与 ASN、代理协议、客户端版本、测试时间窗。
  • 连接层:连接本身发生了什么。握手各段耗时、会话寿命、关闭码、异常关闭原因。
  • 业务层:连接之上传了什么。消息计数、往返时延、丢失与重复、顺序连续性、恢复耗时。

三层分开写的好处是定位快:业务层异常先看连接层是否断过,连接层异常再看环境层是否出口漂移。混在一起写,读者只能看到"整体不好"。

握手和建连阶段要记录哪些字段

握手要分四段记录,不能只写总和:

  • DNS 解析耗时(ms)。
  • TCP 建连耗时(ms)。
  • TLS 握手耗时(ms,wss 才有)。
  • Upgrade 往返耗时(ms):请求发出到收到 101 Switching Protocols。

同时记录校验结果:Sec-WebSocket-Accept 是否与服务端计算值一致、协商的子协议与扩展是否与预期相同、响应头是否被中间设备改写。握手失败要记录失败阶段与错误码,而不是只记"连接失败"。

握手前的代理参数可对照代理设置帮助;Upgrade 握手字段定义见 RFC 6455。

连接持续多久、为什么断开要怎么记录

  • 会话观察时长(s):从收到 101 到关闭或观察窗口结束;窗口结束仍在线单独计数,不当作自然断开。
  • 关闭发起方:只有两端事件或网络日志能佐证时才填写;无法确认则记未知。
  • 本地关闭事件码与实际 Close 帧分开记录。1006 是本地报告的异常关闭状态,不是线上发送的 Close 帧;正常码也不能单独证明业务正常。
  • 异常关闭率:明确分子、分母和观察窗口;握手失败、已关闭连接与窗口结束仍在线的连接分别统计。
  • 心跳配置:间隔与超时阈值(s),以及心跳是否被中间设备吞掉。

关闭事件码分布可帮助筛选样本,但不能仅凭 code 判定发起方或根因。1006 表示本地未观察到有效 Close 帧;需结合客户端、服务端或网络侧日志继续定位。

重连过程应该记录哪些指标

  • 首次重连延迟(ms/s):从检测到断线到发起重连。
  • 重连次数与退避序列:是否按指数退避,是否有抖动。
  • 重连成功率:成功建立新连接的比例。
  • 恢复耗时:从断线到业务可用的时间。
  • 是否携带恢复凭据:如 resume token、last sequence。

重连次数多不代表质量差,可能是服务端主动轮转;但没有退避、密集重连会把故障放大。报告应同时给次数与间隔分布。

如何汇总三层字段并补充消息细节

下表把三层字段汇总成可直接落表的形式。

  • 字段组:握手 | 字段:DNS / TCP / TLS / Upgrade | 单位:ms | 采集方式:受控网络日志、协议工具或服务端/代理日志;浏览器标准事件通常不可提供全部分段 | 用途:定位可观测范围内的建连耗时
  • 字段组:连接 | 字段:观察时长、结束状态、仍在线数 | 单位:s / 次 | 采集方式:连接事件与观察窗口 | 用途:区分自然断开与测试截止
  • 字段组:连接 | 字段:本地关闭事件码、Close 帧收发、可证实的发起方 | 单位:次数 | 采集方式:客户端事件及可用两端日志;不可观测时记 N/A | 用途:作为定位线索,不单独归因
  • 字段组:重连 | 字段:重连次数与间隔 | 单位:次 / s | 采集方式:重连逻辑埋点 | 用途:评估退避是否合理
  • 字段组:消息 | 字段:收发计数 | 单位:条 | 采集方式:消息回调 | 用途:核对是否丢消息
  • 字段组:消息 | 字段:RTT p50 / p95 | 单位:ms | 采集方式:发送与回执时间戳 | 用途:评估体感延迟
  • 字段组:消息 | 字段:序号缺口与重复数 | 单位:条 | 采集方式:序号连续性校验 | 用途:判断顺序与去重
  • 字段组:代理IP | 字段:类型、出口和会话分配 | 单位:枚举 / 地址 / ID | 采集方式:供应商控制台、分配记录及受控回显 | 用途:说明本次测试路径,不能单独证明物理路由

表外还要补两项:消息大小分布与发送频率,否则 RTT 无法横向比较。大消息和小消息的往返时间差异明显,混在一起算分位数会失真。

地区和代理链路还要记录哪些信息

代理IP字段记录实际分配的产品类型、出口和会话变化;无法确认的属性应标为未知。

  • 地区:客户端所在地区,与出口地区分开写。
  • 出口 IP 与 ASN:每条连接记录一次,用于验证地区标签。
  • 代理协议与会话类型:HTTP、SOCKS5,短会话或长会话;品类按实际分配写动态或静态住宅 IP、动态或静态机房 IP,不写笼统的"住宅或机房",并保留出口 IP 与分配时间。
  • 链路跳数:若代理有多跳,记录跳数与各跳耗时。

出口 IP 是测试记录的重要字段,但需与服务端回显、代理分配记录和 DNS/调度信息结合;它本身不能证明物理路径或目标服务调度。

报告模板应该怎样组织和统计

模板按"环境 → 连接 → 业务"顺序排列,每部分先给汇总表,再列异常样本。统计时报告 p50、p95 和样本数,单次最快值不能代表整体表现。
失败与超时单独计数,不混入成功样本的分位数。
按配置地区、出口和时间窗分组;跨窗口比较时同时标明环境差异。

异常样本保留 request id、连接 ID、出口 IP、关闭事件、时间戳及可用证据。报告结论写明客户端版本、服务端环境、测试时长、采集工具和不可观测字段;详细握手数据需受控网络日志、协议工具或服务端/代理日志支持。

连接异常样本可按代理 IP 故障排查中心的字段顺序补充。

FAQ

Q:报告里必须记录出口 IP 吗?

A:建议记录,并同时记代理IP类型。它是验证地区标签与判断出口漂移的重要直接证据之一,但要与服务端回显、代理记录一起看,缺失后地区结论只能靠推断。

Q:close code 只记 1006 够不够?

A:不够。关闭码是协议层线索,不能单独判断发起方或根因。应同时记录本地事件、实际 Close 帧收发和可取得的两端日志,并明确异常关闭率的分子、分母和仍在线连接的处理方式。

Q:时延只报平均值可以吗?

A:不建议。平均值会掩盖尾部延迟,应同时报 p50 与 p95,并注明样本量。