curl不等待响应_利用curl 抓取接口延时数据

简介

做接口开发,有时候会遇到投诉接口响应缓慢的场景。一般客户端投诉会比较多。这个时候我们需要分析一下具体慢在哪个环节。

好在我们可以用curl工具,抓取一段时间内的接口响应延时数据,包括dns解析,建立链接,等待请求响应的时间。

7be50a223cdf218645494ef2019f856d.png

工具源代码

编写了一个脚本工具,源代码如下

#!/bin/bashset -o errexitprint_header () {    echo "code,time_total,time_namelookup,time_connect,time_pretransfer,time_appconnect,time_starttransfer"}make_request () {    curl         --write-out "%{http_code},%{time_total},%{time_namelookup},%{time_connect},%{time_pretransfer},%{time_appconnect},%{time_starttransfer}"         --silent         --output /dev/null         "$@"}if [[ -z "$@" ]]; thenecho "提示:URL地址必须提供使用说明: ./curltiming.sh 例如:./curltiming.sh http://www.baidu.com"exit 1fiprint_headerfor i in `seq 1 10000`; domake_request "$@"done

详细说明

%{http_code},接口状态码

%{time_total}, 从开始到请求完毕的时间,响应完毕

%{time_namelookup},从开始到dns解析完成的时间

%{time_connect},从开始到链接完成的时间

%{time_pretransfer}, 从开始到请求开始传输的时间

%{time_appconnect}, 从开始到tls,ssl建立链接完毕的时间

%{time_starttransfer},从开始到第一个字节开始传输的时间

保存上面的脚本为一个文件,名为curltiming.sh, 然后设置为可执行,执行命令很简单,跟你使用curl一样

例如

chmod a+x ./curltiming.sh./curltiming.sh  -H "Content-Type:application/json" -X POST     --data "{}"  http://www.domain.com/v1/api

记得换成你自己的api地址,参数也换一下

执行结果类似于

code,time_total,time_namelookup,time_connect,time_pretransfer,time_appconnect,time_starttransfer200,0.314,0.012,0.034,0.290,0.290,0.314200,0.273,0.004,0.025,0.250,0.250,0.273200,0.269,0.004,0.026,0.245,0.245,0.269200,0.268,0.004,0.027,0.244,0.244,0.268

你可以重定向到一个csv文件,然后用excel导入,进行各种分析,找出最慢的请求,看耗时是在哪里,是dns解析慢了,还是接口等待响应慢了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值