用Curl计算服务器处理时间

时间:2013-07-14 09:10:25

标签: http curl

我正在使用in this article所述的--write-out选项获取curl请求时间信息。

以下是我的一个请求的示例输出:

        time_namelookup:  0.031
           time_connect:  0.328
        time_appconnect:  1.560
       time_pretransfer:  1.560
          time_redirect:  0.000
     time_starttransfer:  1.903
                        ----------
             time_total:  2.075

我的问题是:如何确定服务器处理请求的时间?答案是:

time_starttransfer - time-connect

即从建立连接到服务器开始发送响应的时间?这似乎是正确的,但我想确定。

有关卷曲计时变量的详细信息,请访问:http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html

2 个答案:

答案 0 :(得分:13)

是的,(time_starttransfer - time-connect)是从curl注意到连接到第一个字节到达的时间。请注意,它还包括传输时间,因此对于远程站点来说,它会因此而变长。

答案 1 :(得分:3)

我说你是对的,(time_starttransfer - time_connect)肯定是服务器处理请求所花费的时间。

然而 - 我也想知道time_connect和time_pretransfer有什么区别? (@Schwartzie和@Cheeso的评论很感兴趣)

通过在网上查看几个卷曲查询,我发现有时它们是平等的,有时它们不是。

然后我想出(至少我相信)他们只是因为HTTPS请求不同,导致服务器需要一些时间来解密ssl层,这不是目标应用花费的时间,而是服务器托管花费的时间应用程序/服务。

解密ssl(以及连接,time_connect中给出的那个)的时间是time_appconnect,并且只有当它为0时(如非https请求) - time_connect和time_pretransfer是EQUAL,否则对于https请求它们不同,对于https,time_pretransfer将等于time_appconnect(而不是time_connect)。

检查以下两个例子:

  • curl -kso / dev / null -w“time_connect =%{time_connect},time_appconnect:%{time_appconnect},time_pretransfer =%{time_pretransfer} \ n”http://www.csh.rit.edu

    • time_connect = 0.128,time_appconnect:0.000,time_pretransfer = 0.128
  • curl -kso / dev / null -w“time_connect =%{time_connect},time_appconnect:%{time_appconnect},time_pretransfer =%{time_pretransfer} \ n”https://www.csh.rit.edu

    • time_connect = 0.133,time_appconnect:0.577,time_pretransfer = 0.577

所以我要说time_pretransfer比time_connect更精确,因为它也会尊重ssl连接,也许还有其他一些我不知道的事情。

如前所述,我会说更准确的答案:

  • “如何确定服务器处理请求的时间?”

可能是:

  • time_starttransfer - time_pretransfer
正如@Schwartzie已经提到的那样,我只想了解原因。