本番環境での正当化ストレステストの結果を測定したいと思います。
Apacheログを分析してreq/secを測定する方法は?
Apache2.2
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %D" combined
%tおよび%Dパラメーターで実行できますか?
リアルタイムで mod_status を使用できます。また、access.logの行を特定の期間にわたってカウントし、そこからレートを計算することもできます。このようなもの
#!/bin/bash
LOGFILE=/var/log/Apache2/access.log
STATFILE=/var/tmp/apachestats
START=$(wc -l "$LOGFILE" | awk '{print $1}')
PERIOD=10
PRECISION=2
sleep "$PERIOD"
while true
do
HITSPERSECOND=0
HITS=$(wc -l "$LOGFILE" | awk '{print $1}')
NEWHITS=$(( HITS - START ))
if [[ "$NEWHITS" > 0 ]]
then
START=$HITS
HITSPERSECOND=$(echo -e "scale=$PRECISION\n$NEWHITS / $PERIOD" | bc -l )
fi
echo "$(date) rate was $HITSPERSECOND" >>"$STATFILE"
sleep "$PERIOD"
done
この素晴らしい記事は私を大いに助けました...
Apacheログの分析に使用する一連の準備済みコマンドを作成しました。
1時間あたりのリクエストcat access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c
日付別の1時間あたりのリクエストgrep "23/Jan" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c
IPによる1時間あたりのリクエストgrep "XX.XX.XX.XX" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c
1分あたりのリクエスト数:cat access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c
日付の1分あたりのリクエスト数:grep "02/Nov/2017" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c
URLの1分あたりのリクエスト数:grep "[url]" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c
1分あたりのIPあたりgrep "XX.XX.XX.XX" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c
それがそれを探している人の助けになることを願っています...
awstat のようなツールを使用するのはどうですか。
手動で行うには、ログエントリ(リクエスト)をカウントしてから、最初と最後のリクエストの間の秒数で除算します。したがって、平均req /秒を取得します。
比較的短いパフォーマンステストを実行する場合は、 apachetop を使用して、リアルタイムでreqsまたはbytes/secを監視できます。 LinuxおよびUnixのtopコマンドに似ていますが、Apacheにビューを提供します。これは、アクセスログファイルを調整することによって機能します。
それがあなたの目的にとって十分に正確であるかどうかはわかりませんが、それは間違いなくあなたにいくつかの素晴らしい球場の数字を与えます。