876

JSON 形式でデータを受信し、データを処理して、結果をリクエスタに返す Web サービスがあります。

を使用して、リクエスト、レスポンス、および合計時間を測定したいと考えていcURLます。

私のリクエスト例は次のようになります。

curl -X POST -d @file server:port

time現在、Linuxで次のコマンドを使用してこれを測定しています。

time curl -X POST -d @file server:port

ただし、 timeコマンドは合計時間のみを測定します-これは私が探しているものではありません.

を使用して要求と応答時間を測定する方法はありますcURLか?

4

15 に答える 15

235

答えは次のとおりです。

curl -X POST -d @file server:port -w %{time_connect}:%{time_starttransfer}:%{time_total}

で使用されるすべての変数は、 にあり-wますman curl

于 2013-08-13T17:31:49.210 に答える
223

オプション 1:測定するtotal time:

curl -o /dev/null -s -w 'Total: %{time_total}s\n'  https://www.google.com

出力例:

Total: 0.441094s

オプション 2:を取得するtime to establish connectiontime to first byte (TTFB)およびtotal time:

curl -o /dev/null -s -w 'Establish Connection: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n'  https://www.google.com

出力例:

Establish Connection: 0.020033s
TTFB: 0.417907s
Total: 0.435486s

参考:curlで応答時間を取得する

于 2015-02-24T10:06:00.630 に答える
62

以下は、サイモンの答えに触発されています。自己完結型 (別のフォーマット ファイルは必要ありません) であるため、.bashrc.

curl_time() {
    curl -so /dev/null -w "\
   namelookup:  %{time_namelookup}s\n\
      connect:  %{time_connect}s\n\
   appconnect:  %{time_appconnect}s\n\
  pretransfer:  %{time_pretransfer}s\n\
     redirect:  %{time_redirect}s\n\
starttransfer:  %{time_starttransfer}s\n\
-------------------------\n\
        total:  %{time_total}s\n" "$@"
}

さらに、はそれらを通過するだけなcurlので、通常受け取るすべての引数で動作するはずです。"$@"たとえば、次のことができます。

curl_time -X POST -H "Content-Type: application/json" -d '{"key": "val"}' https://postman-echo.com/post

出力:

   namelookup:  0,125000s
      connect:  0,250000s
   appconnect:  0,609000s
  pretransfer:  0,609000s
     redirect:  0,000000s
starttransfer:  0,719000s
-------------------------
        total:  0,719000s
于 2017-12-22T16:21:50.890 に答える
49

レイテンシを分析または要約したい場合は、apache ベンチを試すことができます。

ab -n [number of samples] [url]

例えば:

ab -n 100 http://www.google.com/

次のように表示されます。

This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.google.com (be patient).....done


Server Software:        gws
Server Hostname:        www.google.com
Server Port:            80

Document Path:          /
Document Length:        12419 bytes

Concurrency Level:      1
Time taken for tests:   10.700 seconds
Complete requests:      100
Failed requests:        97
   (Connect: 0, Receive: 0, Length: 97, Exceptions: 0)
Total transferred:      1331107 bytes
HTML transferred:       1268293 bytes
Requests per second:    9.35 [#/sec] (mean)
Time per request:       107.004 [ms] (mean)
Time per request:       107.004 [ms] (mean, across all concurrent requests)
Transfer rate:          121.48 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       20   22   0.8     22      26
Processing:    59   85 108.7     68     911
Waiting:       59   85 108.7     67     910
Total:         80  107 108.8     90     932

Percentage of the requests served within a certain time (ms)
  50%     90
  66%     91
  75%     93
  80%     95
  90%    105
  95%    111
  98%    773
  99%    932
 100%    932 (longest request)
于 2017-06-30T16:46:58.663 に答える
32

別の方法は~/.curlrc、このように構成することです

-w "\n\n==== cURL measurements stats ====\ntotal: %{time_total} seconds \nsize: %{size_download} bytes \ndnslookup: %{time_namelookup} seconds \nconnect: %{time_connect} seconds \nappconnect: %{time_appconnect} seconds \nredirect: %{time_redirect} seconds \npretransfer: %{time_pretransfer} seconds \nstarttransfer: %{time_starttransfer} seconds \ndownloadspeed: %{speed_download} byte/sec \nuploadspeed: %{speed_upload} byte/sec \n\n"

したがって、の出力curl

❯❯ curl -I https://google.com
HTTP/2 301
location: https://www.google.com/
content-type: text/html; charset=UTF-8
date: Mon, 04 Mar 2019 08:02:43 GMT
expires: Wed, 03 Apr 2019 08:02:43 GMT
cache-control: public, max-age=2592000
server: gws
content-length: 220
x-xss-protection: 1; mode=block
x-frame-options: SAMEORIGIN
alt-svc: quic=":443"; ma=2592000; v="44,43,39"



==== cURL measurements stats ====
total: 0.211117 seconds
size: 0 bytes
dnslookup: 0.067179 seconds
connect: 0.098817 seconds
appconnect: 0.176232 seconds
redirect: 0.000000 seconds
pretransfer: 0.176438 seconds
starttransfer: 0.209634 seconds
downloadspeed: 0.000 byte/sec
uploadspeed: 0.000 byte/sec
于 2019-03-04T08:03:41.790 に答える
6

デバッグに役立つように、curl リクエストをスニッフィングするための使いやすいフォーマッターを作成しました (使用方法についてはコメントを参照してください)。読みやすい形式で書き出すことができるすべての既知の出力パラメーターが含まれています。

https://gist.github.com/manifestinteractive/ce8dec10dcb4725b8513

于 2015-08-17T04:08:00.700 に答える