Windows for ASP では perfmon を取得できますが...
LinuxでApacheの「1秒あたりのリクエスト」を取得するには?
Windows for ASP では perfmon を取得できますが...
LinuxでApacheの「1秒あたりのリクエスト」を取得するには?
これは、リクエスト率をサンプリングするために作成した短いbashスクリプトです(ログファイルでの使用に関するdicroceの提案wc -l
に基づいています)。
#!/bin/sh
##############################################################################
# This script will monitor the number of lines in a log file to determine the
# number of requests per second.
#
# Example usage:
# reqs-per-sec -f 15 -i /var/www/http/access.log
#
# Author: Adam Franco
# Date: 2009-12-11
# License: http://www.gnu.org/copyleft/gpl.html GNU General Public License (GPL)
##############################################################################
usage="Usage: `basename $0` -f <frequency in seconds, min 1, default 60> -l <log file>"
# Set up options
while getopts ":l:f:" options; do
case $options in
l ) logFile=$OPTARG;;
f ) frequency=$OPTARG;;
\? ) echo -e $usage
exit 1;;
* ) echo -e $usage
exit 1;;
esac
done
# Test for logFile
if [ ! -n "$logFile" ]
then
echo -e $usage
exit 1
fi
# Test for frequency
if [ ! -n "$frequency" ]
then
frequency=60
fi
# Test that frequency is an integer
if [ $frequency -eq $frequency 2> /dev/null ]
then
:
else
echo -e $usage
exit 3
fi
# Test that frequency is an integer
if [ $frequency -lt 1 ]
then
echo -e $usage
exit 3
fi
if [ ! -e "$logFile" ]
then
echo "$logFile does not exist."
echo
echo -e $usage
exit 2
fi
lastCount=`wc -l $logFile | sed 's/\([0-9]*\).*/\1/'`
while true
do
newCount=`wc -l $logFile | sed 's/\([0-9]*\).*/\1/'`
diff=$(( newCount - lastCount ))
rate=$(echo "$diff / $frequency" |bc -l)
echo $rate
lastCount=$newCount
sleep $frequency
done
リアルタイムで、またはmod_statusを使用できますか?
そしてどうやら、Apache用のtopのバージョンがあります...
要約すると、 mod_statusとapachetopを使用できます。
別の方法として、Adam Franco と Jon Daniel の素敵なスクリプトを使用してライブの外観を作成することもできます。
特定の日付と時刻を見たい場合は、次の小さなコマンドを発行できます。
grep "29/Oct/2014:12" /var/log/apache2/example.com.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c | awk '{ if ($1 > 10) print $0}'
関心のある日付と時間、およびログ ファイルの適切なパス ファイル名に置き換えます。
次のようなものが出力されます。
1913 12:47
226 12:48
554 12:49
918 12:50
awk、cut、および uniq コマンドの組み合わせを使用して、この種の迅速な統計を取得するためのより多くのオプションを含む素晴らしい記事がここにあります。
アクセスログで「wc -l」を使用して行数を取得できます(これはリクエスト数にほぼ対応しています...)毎分それを行い、最後の値を差し引いてデルタを取得します...
mod_status でできると思います...
http://httpd.apache.org/docs/2.0/mod/mod_status.html
コミュニティ Apache プラグインを使用して、zenoss を使用して mod_status からデータを収集することもできます。
スクリプトが一貫性のない数値を示しています。-f
パラメータは出力に大きく影響します! また、最初の読み取りも正確ではありません。
私は最終的に使用しました:
while true; do tail -n0 -f access.log>/tmp/tmp.log & sleep 2; kill $! ; wc -l /tmp/tmp.log | cut -c-2; done 2>/dev/null
ここにあります。
過去 1、5、および 15 分間 (top など) の 1 秒あたりの平均リクエスト数を表示する一連の Perl スクリプトを作成しました。https://gist.github.com/1040144にあります。