目标
用户偶发遇到八秒延迟,但服务端指标显示处理很快,怀疑延迟出在连接建立阶段。本配方用 curl 的分阶段计时输出,把一次请求拆成 DNS、连接、TLS、首字节与总耗时,并通过重复采样暴露方差,从而定位真正的瓶颈阶段。
步骤要点
- 用 curl 的 write-out 变量记录 DNS、连接、TLS 与首字节各阶段耗时。
- 循环采样并排序,观察方差与离群值。
- 用固定 IP 对比,把解析器延迟与连接延迟分开。
- 针对主导阶段实施修复后再次采样验证。
curl -o /dev/null -s -w 'dns=%{time_namelookup} connect=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' \
https://api.example.com/v1/search?q=test
排错提示
- 客户端计时包含本地网络,不等于服务端耗时。
- 单次采样不能作为证据,必须重复采样。
- TLS 仅能观察握手时长,不能反映 CPU 成本。
适用边界
- 只覆盖客户端视角,无法替代服务端追踪。
- 需要能复现偶发慢请求的采样量。