TSUNG-нагрузочное тестирование
Установим необходимые пакеты
apt-get install erlang gnuplot-nox libtemplate-perl libhtml-template-perl libhtml-template-expr-perl make
Создадим папку перейдем в нее и загрузим дистрибутив программы утилитой wget.
mkdir ./src; cd ./src && wget http://tsung.erlang-projects.org/dist/tsung-1.5.1.tar.gz
Извлекаем файлы из архива
tar -xvzf tsung-1.5.1.tar.gz
переходим в распакованную папку
#cd ./tsung-1.5.1
и проводим конфигурирование и установку
#./configure && make && make install
Также необходимо создать каталог с именем .tsung
#mkdir ~/.tsung/
Для того, чтобы сгенерировать тестовые планы, можно воспользоваться утилитой tsung-recorder
. После того, как вы делаете tsung-recorder start
, на порту 8090 подымается http-прокси. В настройках системы (или браузера) пропишите прокси localhost:8090 и дальше притворитесь пользователем и прощелкайте сайт. После того этого, выполните tsung-recorder stop
, и у вас появится файл вида ~/.tsung/
tsung_recorder20150603-11.xml
.
Выглядит этот файл приблизительно вот так.
И самое интересное, желаемая нагрузка. Tsung симулирует посещения юзеров. Следующий пример иллюстрирует 4 фазы.
Первая длится 5 минут и каждую секунду сайт посещает 1 новых пользователей (Interarrival
), итого 5 минут x 5 юзеров/сек = 1500 юзеров.
Вторая фаза еще более повышает нагрузку и длится 10 минут, каждые 100 миллисекунд будет создаваться новый пользователь(Interarrival
), в секунду приходит 10 юзеров, в сумме 6 000 юзеров.
Третья фаза длится 15 минут и каждую секунду сайт посещает 10 новых пользователей(Interarrival
), итого 15 минут x 10 юзеров/сек = 9000 юзеров.
Четвертая фаза длится 20 минут и каждую секунду сайт посещает 100 новых пользователей(arrivalrate
), итого 20 минут x 100 юзеров/сек = 120000 юзеров.
<load> <!-- several arrival phases can be set: for each phase, you can set the mean inter-arrival time between new clients and the phasedura <arrivalphase phase="1" duration="5" unit="minute"> <users interarrival="5" unit="second"></users> </arrivalphase> <arrivalphase phase="2" duration="10" unit="minute"> <users interarrival="0.100" unit="second"></users> </arrivalphase> <arrivalphase phase="3" duration="15" unit="minute"> <users interarrival="10" unit="second"></users> </arrivalphase> <arrivalphase phase="4" duration="20" unit="minute"> <users arrivalrate="100" unit="second"/> </arrivalphase> <user session="rec20150603-1101" start_time="0" unit="second"></user> </load>
Количество конкурентных пользователей можно задавать двумя способами. Interarrival. Мы указываем, через какое время создавать нового пользователя. В данном примере каждые 100 миллисекунд будет создаваться новый пользователь. Или можно это сделать по-другому, используя «arrival rate»: мы указываем, сколько пользователей создавать за единицу времени (за секунду в данном случае). Также мы можем задавать какие-то специфические сессии. Можно их встраивать в середину нагрузки для имитации запуска каких-то тяжеловесных сервисов или проверок. Также Tsung может имитировать разные User Agent. Мы можем имитировать, в частности, разные браузеры, задав вероятность (probability) этим параметрам: вероятность присвоения какого-либо User Agent каждому пользователю. В том числе можно имитировать поисковые боты. По умолчанию, если не задавать эти параметры, им присваивается значение tsung. После этого мы запускаем tsung start
. Он проведет нагрузочное тестирование, а дальше получим результаты с помощью tsung_stats.pl
посмотрим созданную папку в папке log
#ls -l ~/.tsung/log/
итого 8 drwxr-xr-x 2 root root 4096 июня 3 19:30 20150603-1930
переходим в нее
#cd ~/.tsung/log/
20150603-1930
и запускаем tsung_stats.pl
#/usr/lib/tsung/bin/tsung_stats.pl