首页/网络/网络排障速查/curl -w 分阶段耗时分析

curl -w 分阶段耗时分析

用 -w 模板把一次请求拆成 DNS、TCP、TLS、首字节、总耗时各阶段,量化慢在哪一层,比掐总时长有说服力。

网络排障速查网络更新于 2026-10-13

curl -w 分段计时

curl 的写入模板能把一次请求拆成几个时间点:名称解析完成、传输层连接完成、加密握手完成、首个字节到达、整个请求结束。每个数值都是从请求发起算起的累计秒数,两个相邻值相减就得到该阶段自己花掉的时间。这样『打开慢』就不再是一句感受,而是一串能落到具体环节的数字:解析慢、连接慢、握手慢、服务端慢、还是传输慢。

基本信息

适用平台Linux、macOS、Windows 10 以上内置的 curl 均支持
核心写法curl -sS -o /dev/null -w '模板' URL,丢弃正文只留数字
常用变量解析、连接、握手、首字节、总耗时、下载速率、下载字节数、响应码
使用要点多次取样取中位数,单次结果受瞬时拥塞影响大
配套动作先记数字再动手,改完后用同样命令复测对比

典型使用场景

  • 用户抱怨页面慢:先量化各阶段耗时,判断是网络还是服务端问题
  • 解析优化验证:调整解析服务后对比解析阶段耗时是否下降
  • 跨地域访问评估:不同地域分别测量,比较连接与首字节耗时的差异
  • 容量排查:传输阶段速率明显低于链路标称时,进一步检查丢包与窗口
  • 上线前后对比:功能发布后复测同一目标,确认性能没有退化

分段计时

分段计时
curl -sS -o /dev/null -w '解析=%{time_namelookup}s 连接=%{time_connect}s 握手=%{time_appconnect}s 首字节=%{time_starttransfer}s 总计=%{time_total}s 状态=%{http_code}\n' https://example.com/
curl -sS -o /dev/null -w '大小=%{size_download}B 速率=%{speed_download}B/s 总计=%{time_total}s\n' https://example.com/static/big.bin
# 连续采样 5 次,去掉瞬时波动的影响:
for i in 1 2 3 4 5; do curl -sS -o /dev/null -w '%{time_total}\n' https://example.com/; done | sort -n | head -3

变量与阶段换算

变量含义与前一阶段相减得到
time_namelookup名称解析完成的时刻解析本身耗时,正常在几十毫秒内
time_connect传输层连接完成的时刻连接耗时,约等于一个往返时间
time_appconnect加密握手完成的时刻握手耗时,通常一到两个往返时间
time_starttransfer收到首个字节的时刻服务端处理与排队耗时
time_total请求全部结束的时刻内容传输耗时,等于总量除以速率
speed_download平均下载速率与链路标称对比可判断是否被限速
分段看的是相对关系:连接耗时若远超一个往返时间,说明握手前有排队或丢包重传;首字节耗时远大于握手耗时,方向就转向服务端。
样本要成组:单次测量容易被瞬时拥塞、缓存命中与否、解析冷热影响,至少取五次并看中位数再下结论。

耗差异常与方向

异常表现常见方向下一步验证
解析阶段明显偏大解析服务慢或链路绕行单独对解析服务做查询计时
连接阶段远超一个往返握手被丢包重传或存在排队结合丢包统计与路径工具
握手阶段偏大证书链拉取、协议协商开销复用会话后复测对比
首字节阶段偏大服务端排队、后端依赖慢看服务端日志与后端依赖耗时
传输阶段速率偏低丢包导致降速或带宽受限用吞吐工具实测并与链路标称对比
把测量结果与往返时延基线换算再判断:跨地域访问时几十毫秒的连接耗时可能完全正常,只看绝对值容易误判。
测量时忘记丢弃正文,下载内容会混进输出干扰读数;同时注意本机代理与缓存对结果的影响,必要时分别做直连与经代理的对照。

易错点

  • 只看总耗时无法区分网络慢与服务端慢,排障方向极易走偏
  • 把不同地域、不同运营商的结果混在一起比较,结论没有意义,应分别建立基线
  • 测量时不做多次采样,把一次拥塞造成的异常值当作常态
  • 忽略解析结果的缓存状态:第二次测量命中缓存后耗时骤降,误判为优化生效
  • 用浏览器的开发者工具与命令行结果直接对比时忽略两者路径与代理差异,得出互相矛盾的结论
  • 复测时没有固定目标与参数,前后数据口径不同,无法判断改动是否有效

数据来源与参考

  • curl 手册:-w/--write-out 变量表
  • curl 官方文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌