Como medir o req / s analisando os logs do apache

1

Eu quero medir o resultado do teste de estresse justificar no env de produção.

Como medir o req / seg analisando os logs do apache?

apache2.2

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %D" combined

Posso fazer com os parâmetros% te% D?

    
por freddiefujiwra 26.01.2011 / 07:12

4 respostas

1

Em tempo real, você pode usar mod_status . Você também pode contar as linhas em seu access.log durante um determinado período e calcular a taxa disso. Algo parecido com isto

#!/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
    
por 26.01.2011 / 12:18
1

Que tal usar uma ferramenta como awstat .

Para fazer manualmente, você pode contar as entradas de log (solicitações) e depois dividi-las pelo número de segundos entre a primeira e a última solicitação. Então, você recebe o req / s médio.

    
por 26.01.2011 / 08:51
1

Se você deseja executar testes de desempenho relativamente curtos, pode ficar de olho em reqs ou bytes / seg em tempo real com o apachetop . É como o comando top no Linux e no Unix, mas fornece uma visão do seu Apache. Ele funciona seguindo o arquivo de log de acesso.

Eu não sei se é preciso o suficiente para os seus propósitos, mas definitivamente dá a você algumas boas estatísticas.

    
por 26.01.2011 / 09:58
1

Este ótimo artigo me ajudou muito ...

link

Eu criei um conjunto de comandos prefixados que estou usando para analisar o log do apache:

solicitação por hora
cat access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c

solicitação por hora por data
grep "23/Jan" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c

solicitação por hora por IP
grep "XX.XX.XX.XX" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c

solicitações por minuto:
cat access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c

solicitações por minuto para a data:
grep "02/Nov/2017" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c

solicitações por minuto para o URL:
grep "[url]" access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c

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

espera que ajude quem está procurando por ele ...

    
por 02.11.2017 / 22:55