Linux下使用curl查看http api 接口请求各阶段耗时

2021-01-05 17:52:13

1. 准备文件模版(curl.txt)

\n
            time_namelookup:  %{time_namelookup}\n
               time_connect:  %{time_connect}\n
            time_appconnect:  %{time_appconnect}\n
           time_pretransfer:  %{time_pretransfer}\n
              time_redirect:  %{time_redirect}\n
         time_starttransfer:  %{time_starttransfer}\n                            ----------\n
                 time_total:  %{time_total}\n
\n


  2. 使用curl带以下参数请求

curl -w "@curl.txt" -o /dev/null -s https://www.sogo.com

  结果:

[@ ~]# curl -w "@curl" -o /dev/null -s https://www.sogo.com
            time_namelookup:  0.004
               time_connect:  0.014
            time_appconnect:  0.141
           time_pretransfer:  0.141
              time_redirect:  0.000
         time_starttransfer:  0.153
                            ----------
                 time_total:  0.165


time_namelookup: DNS 服务器域名解析的时间(以上时间单位都是s) 。

time_connect: client 发出请求,到 c/s 建立TCP 的时间;里面包括 DNS 解析的时间 。

time_starttransfer: client 发出请求;到 server 响应发出第一个字节开始的时间;包括前面的2个时间 。

time_total: 从请求发起到链接关闭的总耗时。 

curl 命令参数解释:

  1. -o: 把curl 返回的html、js 写到垃圾回收站[ /dev/null]

  2. -s: 去掉所有状态

  3. -w: 按照后面的格式写出rt

  4. time_namelookup: DNS 解析时间,从请求开始到 DNS 解析完毕所用时间,单位为秒,如果测试的地址为IP,这里耗时即为0

  5. time_commect: client 和 server 端建立 TCP 连接的时间,连接时间,从开始到建立TCP连接完成所用时间,包括前边DNS解析时间,如果需要单纯的得到连接时间,用这个 time_connect 时间减去前边 time_namelookup 时间

  6. time_starttransfer: 从 client 发出请求;到 web server 响应第一个字节的时间

  7. time_total: client 发出请求;到 web server 发送回所有的相应数据的时间

  8. http_code: http状态码,如200成功,301重定向,404资源未找到,500服务器错误等