2013-07-14 15 views
12

in this articleのように--write-outオプションを使用して、カールのタイミング情報をリクエストしています。ここでCurlでサーバ処理時間を計算する

は、私のリクエストの1からの出力例を次に示します。

 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

re: "転送時間も含まれています" - どの転送時間ですか?リクエスト転送?またはレスポンス転送?または両方? カールのマンページがはっきりしていません。たとえば、time_pretransferには、「開始からファイル転送がまもなく始まるまでの時間(秒)」が含まれます。これには、特定のプロトコルに固有のすべての転送前コマンドとネゴシエーションが含まれます。関与している。どのファイル転送ですか?要求または応答? "ファイル"は何ですか? – Cheeso

2

私はあなたが正しいと言うでしょう(time_starttransfer - time_connect)は、サーバーが要求を処理するのに要した時間です。

しかし、私はtime_connectとtime_pretransferの違いは何ですか? (@Schwartzieと@Cheesoのコメントに興味を持たせて)

ウェブ上でいくつかのカールクエリーを見ると、時にはそれらが同じで、時にはそうでないことが観察されました。

次に、私はHTTPS要求だけが異なっていると思っています(少なくとも信じています).SSLレイヤーの復号には時間がかかりますが、これは対象アプリが費やす時間ではなく、サーバーが費やした時間ですapp/serviceをホストしています。

time_connectとtime_connectに指定されているものは、0のとき(つまり、https以外のリクエストの場合)と同じです - time_connectとtime_pretransferは等価です。 、httpsのtime_pretransferはtime_appconnectと等しくなります(time_connectではなく)。

チェック次の2つの例:

  • カール-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が、それはあまりにもSSL接続を尊重しますので、time_connectに比べて使用することがより正確である、と私は認識していないよおそらくいくつかの他のもののことを言うと思います。以前のすべてが言われていると

、私は質問のためのものより正確な答えを言うと思います:「どのように私は、サーバーが要求を処理しましたどのくらいの時間を決定することができますか?」

は、おそらく次のようになります。

  • time_starttransfer -

time_pretransfer @Schwartzieは、すでに述べたように、私は理由を理解したかったです。