用 curl -w 给接口画一张“耗时体检表”:排查慢请求的小技巧

举报
yd_235144085 发表于 2026/10/22 00:26:59 2026/10/22
【摘要】 日常联调接口时,偶尔会遇到某个请求突然变慢。第一反应往往是“网络问题还是服务问题”,与其靠猜,不如让 curl 把一次请求各个阶段的耗时打印出来,一眼定位瓶颈。curl 的 -w(–write-out)参数可以在请求结束后按指定格式输出时间变量。配合 -o /dev/null -s 丢掉响应体,只看时间:curl -o /dev/null -s -w 'DNS解析: %{time_namel...

日常联调接口时,偶尔会遇到某个请求突然变慢。第一反应往往是“网络问题还是服务问题”,与其靠猜,不如让 curl 把一次请求各个阶段的耗时打印出来,一眼定位瓶颈。

curl 的 -w(–write-out)参数可以在请求结束后按指定格式输出时间变量。配合 -o /dev/null -s 丢掉响应体,只看时间:

curl -o /dev/null -s -w 'DNS解析: %{time_namelookup}s\nTCP建连: %{time_connect}s\nTLS握手: %{time_appconnect}s\n首字节: %{time_starttransfer}s\n总耗时: %{time_total}s\n' https://example.com/api/health

几个关键变量的含义:

  • time_namelookup:DNS 解析耗时。偏大先查本地 DNS,或换个公共 DNS 试试;
  • time_connect:TCP 建连耗时。偏大多是网络链路问题,或目标机器负载过高;
  • time_appconnect:TLS 握手耗时,只有 HTTPS 请求才有;
  • time_starttransfer:从发起到收到第一个字节,包含了服务端处理时间,偏大先查服务端日志;
  • time_total:总耗时。

我在实战中常用它做三件事:一是对比不同网络环境下同一接口的耗时,判断慢在客户端网络还是服务端;二是给超时参数设值提供依据,--connect-timeout 和 --max-time 不再拍脑袋;三是写成 shell 小脚本定时跑,耗时超阈值就告警,简单可靠。

两个小提醒:-w 输出的是单次请求的数据,网络抖动时建议多跑几次取中位数;真要做压测还是请用专业工具,curl 只适合快速定性排查。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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