如何通过分析apache日志来衡量req / sec

我想测量生产环境的合理压力testing结果。

如何通过分析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 

如何使用像awstat这样的工具。

要手动执行操作,可以对日志条目(请求)进行计数,然后将它们除以第一个和最后一个请求之间的秒数。 所以,你得到的平均需求/秒。

如果你想运行相对较短的性能testing,你可以使用apachetop实时监视reqs或者bytes / sec。 这就像在Linux和Unix的顶级命令,但提供了一个视图给你的Apache。 它通过拖拽访问日志文件来工作。

我不知道它是否足够满足你的目的,但它绝对会给你一些不错的数据。

这篇伟大的文章帮了我很多…

http://www.inmotionhosting.com/support/website/server-usage/view-level-of-traffic-with-apache-access-log

我创build了一套我用来分析apache日志的prepered命令:

每小时的请求
cat access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c

按date按小时请求
grep "23/Jan" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c

IP每小时请求
grep "XX.XX.XX.XX" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c

每分钟请求数:
cat access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c

date请求每分钟:
grep "02/Nov/2017" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c

url的每分钟请求数:
grep "[url]" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c

每分钟IP
grep "XX.XX.XX.XX" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c

希望它能帮助任何正在寻找它的人