リクエストごとの応答時間のあるWebサーバーからのログファイルがあるとしましょう。
_1st_request 1334
_2nd_request 345
_3rd_request 244
_4th_request 648
......... etc
bashスクリプトを使用して、上位の十分位数(10分位)を見つける簡単な方法はありますか?言い換えれば、質問に答えるには、最も遅いリクエストの10%を除外した場合、最も遅いリクエストはどれくらい遅くなりましたか?
リクエストごとの応答時間のあるWebサーバーからのログファイルがあるとしましょう。
_1st_request 1334
_2nd_request 345
_3rd_request 244
_4th_request 648
......... etc
bashスクリプトを使用して、上位の十分位数(10分位)を見つける簡単な方法はありますか?言い換えれば、質問に答えるには、最も遅いリクエストの10%を除外した場合、最も遅いリクエストはどれくらい遅くなりましたか?
awk '{print $2}' | sort -rn | perl -e '$d=.1;@l=<>;print $l[int($d*$#l)]'
すべてを perl で行う方が、実際にはよりエレガントです。一時ファイルを使用する場合は、 wc + head/tail を使用して、並べ替えられた数値のリストから分位数を選択できます。
おそらく、リクエスト フィールド カウント行数で数値的に並べ替え、最後から 10% の行を取得します。
FILE=responseTimes.log
TMPFILE=tmpfile
sort -k 2 -n $FILE > $TMPFILE
LINECOUNT=`wc -l $TMPFILE | sed -e 's/^ *//' -e 's/ .*$//'`
TARGETLINE=echo "$LINECOUNT * 9 / 10" | bc
sed -n "$TARGETLINE{p;q;}" $TMPFILE
それがあなたが探していたものであることを願っています。