用 curl -w 给接口画一张“耗时体检表”:排查慢请求的小技巧
【摘要】 日常联调接口时,偶尔会遇到某个请求突然变慢。第一反应往往是“网络问题还是服务问题”,与其靠猜,不如让 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)