Я хочу измерить обоснованный результат стресс-теста на производственной среде.
Как измерить req / sec, проанализировав логи apache?
apache2.2
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %D" combined
Могу я сделать с параметрами% t и% D?
Эта замечательная статья мне очень помогла ...
Я создал набор предварительно заданных команд, которые использую для анализа журнала apache:
запрос в час
cat access.log | cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":00"}' | sort -n | uniq -c
запрос в час по дате
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
запросов в минуту на дату:
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
надеется, что это поможет любому, кто его ищет ...
В реальном времени вы можете использовать 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.
Чтобы сделать это вручную, вы можете подсчитать записи журнала (запросы), а затем разделить их на количество секунд между первым и последним запросом. Итак, вы получаете среднее количество запросов в секунду.
Если вы хотите запустить относительно короткие тесты производительности, вы можете следить за запросами или байтами в секунду в режиме реального времени с помощью Apachetop. Это как верхняя в Linux и Unix, но обеспечивает представление вашего Apache. Он работает, отслеживая файл журнала доступа.
Я не знаю, достаточно ли он точен для ваших целей, но он определенно дает вам неплохие приблизительные цифры.