用对比法缩小范围
同一个服务,问题只在部分场景出现时,最省事的定位方式是做交叉对比:内网客户端访问内网服务、公网客户端访问同一服务、内网客户端访问其他服务,三组结果摆在一起,问题的边界立刻就出来了——是路径问题、服务端问题还是客户端侧问题。对比的前提是每组只改一个变量,其余条件保持一致。
基本信息
| 方法 | 同一时段在多个位置采集,或分时段采集后比对 |
|---|---|
| 对照维度 | 客户端位置、服务端入口、链路线路 |
| 基线选择 | 内网客户端访问内网服务作为性能与功能基线 |
| 固定变量 | 请求参数、并发量、时间窗、客户端版本、目标地址 |
| 采样要求 | 每组至少采集数分钟,避免偶发波动被当作结论 |
| 输出形式 | 对比矩阵表,把每组结论填进对应格子 |
典型使用场景
- 用户报障:只有部分地区用户反映慢,用公网多线路与内网对照判断是否与线路相关
- 灰度验证:新链路或新网关上线后,与旧入口做同请求对比
- 客户端排查:同一用户在不同网络下表现不同,判断是否为其本地网络环境导致
- 服务端确认:确认问题是否与访问入口无关,而是服务自身性能问题
- 变更回滚评估:变更前后各组数据对照,量化变更影响范围
对比矩阵
对比矩阵
组 A 内网客户端 -> 内网服务 基线, 预期最快
组 B 公网客户端 -> 内网服务 引入公网路径后的表现
组 C 内网客户端 -> 公网入口 引入入口侧代理后的表现
组 D 公网客户端 -> 公网入口 用户真实路径
# 每组记录: 建连耗时 / 首字节耗时 / 总耗时 / 重传数
# 交叉后即可定位问题落在客户端、路径还是服务端结果对照与推断
| 观察结果 | 指向 | 下一步 |
|---|---|---|
| 内网正常, 公网慢 | 路径或公网入口 | 对比不同线路与不同运营商 |
| 各路径都慢 | 服务端侧 | 查服务端处理耗时与资源占用 |
| 个别客户端慢 | 客户端侧 | 查其本地网络、代理与版本 |
| 仅某入口慢 | 该入口的网关或代理 | 对比入口的负载与转发配置 |
| 全部正常但用户仍报障 | 采样时段不符 | 按报障时间点在正确时段重采 |
对比法的价值在于同时固定其他变量;如果各组用的请求参数不同、测试时段不同,得到的差异无法归因,等于白测一轮。
公网侧测试要覆盖不同运营商与不同地域,单一线路的结论很容易被当作全局结论,实际只是某条线路的局部问题。