カール応答時間を測定する方法
なぜカール?
HTTPリクエストのベンチマークのための特定のツールの束があります.
ab
, JMeter
, wrk
...ではなぜ
curl
目的のために?何故なら
curl
広く使用されており、Web開発者のための一般的な言語の一種です.また、いくつかのツールには、HTTPリクエストをAとして取得する機能があります
curl
コマンド.URLとパラメータだけでなくリクエストヘッダも含めてコピーするので便利です
Authorization
or Cookie
.工具
この記事では、これらのツールを使用します.
カールを使用して応答時間を測定する
まずは準備をしましょう
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
はこのような目的に便利です.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
最も簡単なオプションかもしれません.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
それだ!Reference
この問題について(カール応答時間を測定する方法), 我々は、より多くの情報をここで見つけました https://dev.to/yuyatakeyama/how-i-measure-response-times-of-web-apis-using-curl-6nhテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol