curlですぐにapiの時間を計測!
shellで複数回apiを叩いて平均的なレスポンスの時間を取得したいという場合に簡単に使えるスクリプトを書きました
ENDPOINT
に計測したいapiのurlを書いて、実行するだけです。
実行回数とAPI method
, data
も変数内に記入することができるようにしています
$ vim response.sh # お好きなエディタで
...下記のコードを保存...
$ chmod 700 response.sh
$ ./response.sh
#!/bin/bash
# 集計用
TOTAL=0
# custom variables
## curl設定
ENDPOINT="https://xxxxxx/yyyyy"
METHOD="POST"
DATA='{"hoge": "fuga"}'
## 回数
COUNT=10
## 平均の計算で小数点以下何桁まで表示するか
SCALE=10
for ((c=1; c<=$COUNT; c++))
do
# curlでレスポンスにかかった時間を取得
TIME=$(curl $ENDPOINT -X $METHOD -d $DATA -s -o /dev/null -w "%{time_starttransfer}\n")
# 時間を標準出力に表示
echo "time: $TIME [ms]"
# 加算する
TOTAL=`echo "$TOTAL + $TIME" | bc`
done
# 平均を計算
AVG=`echo "scale=$SCALE; $TOTAL / $COUNT" | bc`
# 結果出力
echo "total: $TOTAL [ms]"
echo "avarage: $AVG [ms]"