2013-07-14 37 views
12

我使用--write-out選項(如in this article所述)使用捲曲功能獲取請求時間信息。使用卷積計算服務器處理時間

這裏是我的要求的一個例子輸出:

 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

+3

我一直在試圖弄清楚這一點。我發現http://curl.haxx.se/docs/manpage.html上的時間描述更易於閱讀。我目前對遠程處理時間的最佳猜測是'time_starttransfer - time_pretransfer'。我的理解是'time_pretransfer - time_connect'還包括髮送請求所需的時間。 – Schwartzie

回答

9

是,(time_starttransfer - 時間連接)是從連接是由捲曲注意到,直到第一個字節到達的時間。請注意,它還包括傳輸時間,因此,對於遠程站點,傳輸時間會更長。

+1

回覆:「它還包含傳輸時間」 - 哪個傳輸時間?請求傳輸?或者答覆轉移?或兩者? 捲曲手冊頁不清楚。例如,對於time_pretransfer來說,「從開始到文件傳輸即將開始的時間(以秒爲單位),包括特定於特定協議的所有預傳輸命令和協商,參與「。什麼文件傳輸?請求還是迴應?什麼是「文件」? – Cheeso

2

我想說你是對的,(time_starttransfer - time_connect)肯定是服務器用來處理請求的時間量。

但是 - 我也想知道time_connect和time_pretransfer有什麼區別? (感興趣的是@Schwartzie和@Cheeso的評論)

通過查看網絡上的幾個curl查詢,我發現有時它們是平等的,有時它們不是。

然後我想出了(至少我是這麼認爲的),他們只有HTTPS請求才會有所不同,導致服務器需要一些時間來解密SSL層,這不是目標應用程序花費的時間,而是服務器花費的時間託管應用程序/服務。

解密ssl(以及連接,也是time_connect中給出的)的時間是time_appconnect,並且只有當它爲0時(如非https請求) - time_connect和time_pretransfer是EQUAL,否則對於https請求它們不同,並且對於https time_pretransfer將等於time_appconnect(而不是time_connect)。

檢查以下兩個例子:

  • 捲曲-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
  • 捲曲-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已經提到的,我只是想知道爲什麼。