Тестване на производителност с autobench

от БАРЗИКТ Wiki
Направо към: навигация, търсене


Описание

autobench e прост скрипт, написан на Perl, който автоматизира процеса на тестване на производителността на WEB сървъри с httperf. autobench стартира httperf многократно, като всеки път увеличава броя на заявките (connections) в секунда и извлича информация за генериране на статистика.

Инсталиране на autobench

apt-get update
apt-get upgrade

cd /tmp
wget http://www.xenoclast.org/autobench/downloads/debian/autobench_2.1.2_i386.deb
sudo dpkg -i autobench_2.1.2_i386.deb

Забележка: Последните версии на autobench са достъпни от http://www.xenoclast.org/autobench/.

Стартиране на autobench

autobench --single_host --host1 www.test.com --uri1 /index.html --port1 80 --quiet --low_rate 20 --high_rate 200 --rate_step 20 --num_call 10 --num_conn 5000 --timeout 5 --file results.tsv 

По този начин се стартира autobench със следните параметри:

  • --single_host - проверка на един единствен хост
  • --host1 - име или адрес на хост
  • --uri1 /index.html - тестова страница (URI)
  • --port1 - порт
  • --quiet - скрива част от изхода на скрипта (този параметър може да не работи правилно при някои версии на autobench)
  • --low_rate 20 - начална стойност на заявките в секунда (connections) 20
  • --high_rate 200 - крайна стойнот на заявките в секунда (connections) 200
  • --rate_step 20 - увеличаване на броя на заявките в секунда (connections) с 20
  • --num_call 10 - брой сесии в секунда (request) 10
  • --num_conn 5000 - всеки тест се състои от 5000 заявки (connections)
  • --timeout 5 - ако отговора не се получи в рамките на 5 секунди се счита за грешка
  • --file - файл, в който се записват резултатите от теста

Реузлтат от анализа

Резултатът от анализа се записва в посочения от ключа --file файл. Данните са във формат CSV.

Примерен резултат от сканирането е показан на фигурата по-долу:

Autobench result file.png


  • dem_req_rate - стартираните заявки (requests) в секунда
  • req_rate - заявките (requests) в секунда, които реално могат да се осъществят
  • con_rate - връзките (connections) в секунда, които могат реално да се осъществят
  • min_rep_rate - минимален брой отговори (replies) в секунда
  • avg_rep_rate - среден брой отговори (replies) в секунда
  • max_rep_rate - максимален брой отговори (replies) в секунда
  • stddev_rep_rate - стандартно отклонение на параметъра отговори (replies) в секунда
  • resp_time - времето за отговор в милисекунди
  • net_io - натоварване на мрежата в KB/s
  • errors - брой грешки

Създаване на графика с bench2graph

След инсталиране на autobench в скрипта bench2graph има неточност - два грешни параметъра. След направените корекции скрипта трябва да изглежда по следния начин:

#!/bin/sh
#
# BenchToGraph : Graph modeler for Autobench results files
# written by Samuel Dupas <samuel.dupas@synaptique.co.uk>
#
# Thanks to Julian T J Midgley <jtjm@xenoclast.org>
#

if [ $# -lt 2 ] ; then
    echo "Usage          : bench2graph PARAM_1 PARAM_2 [ PARAM_3 ... PARAM_N ]"
    echo "Parameter 1    : autobench results file"
    echo "Parameter 2    : name of the postscript output file"
    echo "Parameter 3..N : [optional] columns to display in the graphic"
    exit 1
fi

if [ ! -f $1 ] ; then
    echo "Incorrect file format"
    exit 2
fi

if [ -f ${2} ] ; then
    echo "File ${2} already exist"
    exit 3
fi

input=$1
shift

output=$1
if [ `echo $output |cut -c 1` != '/' ] ; then
	output=`pwd`/$output
fi
shift

while [ $# -ne 0 ] ; do
    liste="$liste,$1,"
    shift
done


echo -n "Enter the title : "
read title

if [ ! -d /tmp/graph_script ] ; then
    mkdir /tmp/graph_script
fi
mkdir /tmp/graph_script/$$

cp $input /tmp/graph_script/$$/results.tsv
cd /tmp/graph_script/$$

nblines=`cat results.tsv | wc -l`
nblines=`expr $nblines - 1`


legend=`head -1 results.tsv`
i=1
for col in $legend ; do
    if [ $i -ne 1 ] ; then
	if [ `echo -n $liste | wc -c` -eq 0 ] ; then
	    tail -$nblines results.tsv | gawk '{print $1 " " $line}' line=$i > $col
	    files="$files $col" 
	elif `echo $liste | grep ",${i}," > /dev/null` ; then
	    tail -$nblines results.tsv | gawk '{print $1 " " $line}' line=$i > $col
	    files="$files $col"
	fi
    fi
    i=`expr $i + 1`
done

echo set terminal postscript color > gnuplot.cmd
echo set key outside below >> gnuplot.cmd
echo set key box >> gnuplot.cmd
echo set grid >> gnuplot.cmd
echo set output \"${output}\" >> gnuplot.cmd
echo set style data linespoints >> gnuplot.cmd
echo set title \"$title\" >> gnuplot.cmd
echo -n plot >> gnuplot.cmd
j=0
for col in $files ; do
    if [ $j -ne 0 ] ; then
	echo -n "," >> gnuplot.cmd
    fi
    echo -n " \"${col}\"" >> gnuplot.cmd
    j=`expr $j + 1`
done
echo >> gnuplot.cmd

gnuplot gnuplot.cmd


rm -rf /tmp/graph_script/$$

Стартирането на скрипта става по следния начин:

bench2graph /tmp/results /tmp/result_graph

Генерираният файл е във формат PS.

Допълнителна информация