curl 请求获取响应时间

前几天对接一个第三方的接口,通过查看日志发现从请求到响应加来花了20几秒,截图给对方,对方自己用 postman 测试响应测试是几十毫秒。就这样,我们说他们接口有问题,他们说自己接口没问题,进入了死结。因为是在我代码层发送的请求,所以别人会说是我自己的代码效率问题,为了给出证据,通过查找资料,使用 curl 来请求对方的 webservice 接口来查看响应时间,如果直接在命令行 curl 请求打印的响应时间很慢,我们就可以怼对方了。

  • 新建一个 format.txt 文件,内容如下:

    \n
      time_namelookup:  %{time_namelookup}\n
         time_connect:  %{time_connect}\n
      time_appconnect:  %{time_appconnect}\n
        time_redirect:  %{time_redirect}\n
     time_pretransfer:  %{time_pretransfer}\n
    time_starttransfer:  %{time_starttransfer}\n
           time_total:  %{time_total}\n
  • 新建文件存储 webservice 请求体,文件为 test.xml
    请求命令:
    curl -w "@format.txt" --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:" --data @test.xml http://xxx/xxWebService.asmx
    结果如下:

curl 请求获取响应时间

也可以测试其他 http 请求

curl 请求获取响应时间
如果不关注返回结果,可以添加参数 -o /dev/null

  • 参数解析
    time_namelookup :解析 dns 时间
    time_connect:发起请求,到TCP 请求建立握手时间
    time_appconnect:SSL/SSH 等上层协议建立连接的时间,比如 connect/handshake 的时间
    time_redirect : 从开始到最后一个请求事务的时间
    time_pretransfer:从请求开始到响应开始传输的时间
    time_starttransfer:从请求开始到第一个字节将要传输的时间
    time_total :这次请求花费的全部时间

  • 结果
    通过该方式测试出对方接口请求到响应在 7 秒左右,但是第二次请求就非常快了,不知道对方是不是做了什么缓存,但对方坚决说没有、、、

本作品采用《CC 协议》,转载必须注明作者和本文链接
雪花飘
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!