curl 慢得像蜗牛?先用 -w 把耗时拆成三段再下结论

举报
1swei 发表于 2026/11/05 09:37:23 2026/11/05
【摘要】 线上接口突然变慢,第一反应往往是"后端挂了"。但先别急着重启服务——用 curl -w 把一次请求的耗时拆开,很多时候慢的根本不是后端。一条命令就够:curl -o /dev/null -s -w 'dns:%{time_namelookup} conn:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} tot...

线上接口突然变慢,第一反应往往是"后端挂了"。但先别急着重启服务——用 curl -w 把一次请求的耗时拆开,很多时候慢的根本不是后端。

一条命令就够:

curl -o /dev/null -s -w 'dns:%{time_namelookup} conn:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} total:%{time_total}\n' https://example.com/api

五个数字对应五个阶段:

  1. time_namelookup:DNS 解析耗时。这一段大,先查本地 DNS 和运营商解析,别去动应用。
  2. time_connect:TCP 建连耗时。从 namelookup 结束算起。这一段大,多半是网络链路或对端防火墙/安全组的问题。
  3. time_appconnect:TLS 握手耗时(HTTPS 才有)。证书链过长、OCSP 检查卡住都会拖慢这一段。
  4. time_starttransfer:首字节时间。从请求发出到收到第一个字节——这一段大,才轮到怀疑后端逻辑或数据库。
  5. time_total:总耗时,用来和上面四段对账。

对号入座举例:dns:0.002 conn:2.104 tls:0.001,慢在建连,查网络;ttfb 占比超过总耗时八成,再去看应用日志和慢查询。

两个容易踩的坑:

  • 第一次慢、后面几次快:可能是 DNS 缓存或连接复用生效了,对比时要固定条件(比如每次都加 --resolve 或清掉复用)。
  • 忘记加 -o /dev/null -s:进度条和 body 输出会干扰计时,计时场景下 body 本来也不用看。

排查顺序总结:先拆耗时,再定位到 DNS / 网络 / TLS / 后端中的一段,最后才去动那一段的配置。慢请求不可怕,可怕的是没拆开就全盘重启——重启治不好 DNS。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。