開発中のSSSAPIのレスポンスタイムを計測したときに調べた備忘録。
計測した結果の記事はこちら。
・SSSAPIと他のサービスをいろいろ比較してみた(GAS/SheetDB/sheety/Stein/sheetsu)
以下の記事がわかりやすく、こちらを参考にした ・curlでパフォーマンス測定 | DevelopersIO
計測方法
こんな感じで、それぞれの時間をCSV形式で出力できる。
curl https://example.com -o /dev/null -s -w @- << EOF %{size_download}, %{size_upload}, %{speed_download}, %{speed_upload}, %{time_namelookup}, %{time_connect}, %{time_appconnect}, %{time_pretransfer}, %{time_starttransfer}, %{time_total}\n EOF
それぞれの値は以下の通り。
変数名 | 解説 |
---|---|
size_download | ダウンロードしたデータの総量(bytes) |
size_upload | アップロードしたデータの総量(bytes) |
speed_download | ダウンロードしたデータ量の1秒あたりの平均(bytes/sec) |
speed_upload | アップロードしたデータ量の1秒あたりの平均(bytes/sec) |
time_namelookup | DNSの名前解決が完了した時間(sec) |
time_connect | TCPなどのコネクションの確立が完了した時間(sec) |
time_appconnect | TLSなどの接続、ハンドシェイクが完了した時間(sec) (7.19.0で追加) |
time_pretransfer | データの転送が開始した時間(sec) |
time_starttransfer | サーバーからレスポンスの最初のデータを受信した時間(sec) |
time_total | 全体の処理にかかった時間(sec) |
複数回実行する関数
毎回実行するのはめんどくさいので、
指定回数繰り返す関数を作ってみた。
~/.bashrc
等に含めて、curl-times-csv
を使えるようにしておく。
# ~/.bashrc # 使い方: $ curl-times-csv <url> <times> function curl-times-csv() { URL="$1" N="$2" if [ "${N}" == "" ]; then N=3 fi echo "remote_ip,http_code,size_download,size_upload,speed_download,speed_upload,time_namelookup,time_connect,time_appconnect,time_pretransfer,time_starttransfer,time_total" for i in $(seq ${N});do sleep 1 curl -L ${URL} -o /dev/null -s -w @- << EOF %{remote_ip}, %{http_code}, %{size_download}, %{size_upload}, %{speed_download}, %{speed_upload}, %{time_namelookup}, %{time_connect}, %{time_appconnect}, %{time_pretransfer}, %{time_starttransfer}, %{time_total}\n EOF done }
使い方はこんな感じ。
# デフォルトの回数は3回 $ curl-times-csv https://example.com remote_ip,http_code,size_download,size_upload,speed_download,speed_upload,time_namelookup,time_connect,time_appconnect,time_pretransfer,time_starttransfer,time_total 2404:6800:4004:81c::2004,200,14148,0,48786.000,0.000,0.019082,0.029019,0.159407,0.159728,0.286718,0.290678 2404:6800:4004:81c::2004,200,14107,0,53033.000,0.000,0.005623,0.015292,0.130902,0.131168,0.264514,0.266589 2404:6800:4004:81c::2004,200,14089,0,51047.000,0.000,0.005564,0.021174,0.135981,0.136204,0.275238,0.276625 # 1回のみの場合 $ curl-times-csv https://example.com 1 remote_ip,http_code,size_download,size_upload,speed_download,speed_upload,time_namelookup,time_connect,time_appconnect,time_pretransfer,time_starttransfer,time_total 2404:6800:4004:81c::2004,200,14148,0,48786.000,0.000,0.019082,0.029019,0.159407,0.159728,0.286718,0.290678
以上!!