カール応答時間を測定する方法


なぜカール?


HTTPリクエストのベンチマークのための特定のツールの束があります.ab , JMeter , wrk ...
ではなぜcurl 目的のために?
何故ならcurl 広く使用されており、Web開発者のための一般的な言語の一種です.
また、いくつかのツールには、HTTPリクエストをAとして取得する機能がありますcurl コマンド.

URLとパラメータだけでなくリクエストヘッダも含めてコピーするので便利ですAuthorization or Cookie .

工具


この記事では、これらのツールを使用します.
  • curl
  • curlb
  • ntimes
  • percentile
  • カールを使用して応答時間を測定する


    まずは準備をしましょうcurl コマンド.今回はGoogle Chromeを使って個人的なブログにリクエストのコマンドをいただきました.( Cookie を削除する)
    $ curl 'https://blog.yuyat.jp/' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ja;q=0.6' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36' -H 'Connection: keep-alive' --compressed
    
    サーバからレスポンス本体を出力します.
    これらのオプションを追加しましょう.
    -s -o /dev/null -w  "%{time_starttransfer}\n"
    
    -s 黙って進む.-o レスポンス本体を/dev/null .
    重要なのは-w .
    様々な形式を指定することができますtime_starttransfer レスポンス時間(最初のバイトまでの時間)を取得します.
    以下のようになります.
    $ curl 'https://blog.yuyat.jp/' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ja;q=0.6' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36' -H 'Connection: keep-alive' --compressed -s -o /dev/null -w  "%{time_starttransfer}\n"
    0.188947
    
    応答時間は0.188947秒(188 msec)である.
    シンプルにするために、ラッパーコマンドも作成しましたcurlb :
    #!/bin/sh
    curl -s -o /dev/null -w '%{time_starttransfer}\n' "$@"
    

    応答時間のパーセンタイルを測定します


    これは、単一の要求からベンチマークに適切ではない.
    次に、100リクエストのパーセンタイルを測定しましょう.ntimes はこのような目的に便利です.
  • https://github.com/yuya-takeyama/ntimes
  • インストールするにはgo get github.com/yuya-takeyama/ntimes またはリポジトリには事前に作成されたバイナリがあります.
    追加しましょうntimes 100 -- の初めにcurl コマンド.
    $ ntimes 100 -- curlb 'https://blog.yuyat.jp/' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ja;q=0.6' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36' -H 'Connection: keep-alive' --compressed
    0.331915
    0.064085
    0.059883
    0.074047
    0.059774
    ...
    
    そして、数値のパーセンタイルを測定するためにpercentile 最も簡単なオプションかもしれません.
  • https://github.com/yuya-takeyama/percentile
  • でインストールgo get github.com/yuya-takeyama/percentile またはREPOから中古のバイナリをダウンロードします.
    とappend| percentile コマンドの最後まで.
    $ ntimes 100 -- curlb 'https://blog.yuyat.jp/' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ja;q=0.6' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36' -H 'Connection: keep-alive' --compressed | percentile
    50%:    0.061777
    66%:    0.06412
    75%:    0.06872300000000001
    80%:    0.07029000000000001
    90%:    0.07496700000000001
    95%:    0.076153
    98%:    0.077226
    99%:    0.07957
    100%:   0.109931
    
    それだ!