Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
 Packages
 Make 
 Iptables 
 Nmap 
 Apache 
 LFS 
 TUX 
 cURL 
 libpcap 
 Parted 
 Httpd 
 File managers 
 FFMPEG 
 RTMP 
 SQL 
 Test 
NEWS
Последние статьи :
  Алгоритмы 12.04   
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
  SQL 30.07   
  Python 10.06   
 
TOP 20
 Trees...690 
 Intel 386...418 
 Secure Programming for Li...295 
 2.0-> Linux IP Networking...287 
 Perl + Apache...286 
 Stein-MacEachern-> Час...212 
 Ethreal 1...179 
 Python...172 
 Robert Love 1...160 
 ffmpeg->tutorial...156 
 Daniel Bovet 4...155 
 Daniel Bovet 6...153 
 C++ Faq 5...145 
 Kamran Husain...142 
 Keogh 1...139 
 Robert Love 4...133 
 JeffOS...132 
 William Gropp...131 
 Hansen 1...127 
 Kroah-Hartman 1...122 
 
  01.05.2020 : 2901126+ посещений 

iakovlev.org

yandex.tank

Яндекс.Танк - это инструмент для проведения нагрузочного тестирования и анализа производительности веб-сервисов и приложений.
Основные возможности:
встроенный мониторинг ресурсов тестируемого сервера по протоколу SSH;
авто-стоп теста по конфигурируемым критериям, например, если время отклика сервера превышает заданный порог;
вывод результатов в консоль и в виде графиков;
открытая архитектура позволяет расширять функциональность инструмента собственными модулями.
Яндекс.Танк был разработан в Яндексе в 2006 году для измерения показывающей части баннерной системы. Сейчас он один из основных инструментов измерения производительности.

Установка: если вы обладатель убунты, вам нужно просто выполнить несколько команд:

 sudo apt-get install python-software-properties
 sudo add-apt-repository ppa:yandex-load/main
 sudo apt-get update
 sudo apt-get install yandex-load-tank-base
 
В противном случае вам прийдется сделать больше телодвижений:
Сначала нужно убедиться, что в системе установлены пакеты python-psutil, python-ipaddr, python-progressbar, python-lxml.
Затем нужно забрать по адресу 64-битного репозитария бинарную сборку, состоящую из 2 пакетов - сам яндекс-танк и фантом. Фантом - это веб-сервер, он же высокопроизводительный асинхронный генератор нагрузки , при помощи которого возможно генерировать десятки тысяч HTTP-запросов в секунду, написан на с++. Можно забрать эти два бинаргых пакета также у меня: phantom-0.14.0-pre44.1.el6.x86_64.rpm и yandex-tank-1.4.6-8.noarch.rpm.

После установки этих двух пакетов можно приступать к тестированию. Создаем папку test. В папке создаем файл load.ini, который состоит из секций и параметров. Содержание файла load.ini:

 [phantom]
 address=localhost
 port = 80
 rps_schedule = const (1,50s) line (1, 40, 1m) step (40, 1, 5, 8s).
 uris = /
   /search.html
 headers = [Host localhost]
 
В качестве адреса можно использовать как ip-шник, так и полное доменное имя. Танк позволяет создать 3 вида нагрузки:
     Постоянная – указывается количество запросов и время
     Линейный рост – указывается начальное и конечное значение и время
     Рост шагами – указывается начальное и конечное значение, шаг увеличения нагрузки и время.
 
Причём эти виды нагрузки можно комбинировать в одном тесте. В следующей строке описывается профиль нагрузки:
   rps_schedule = const (1,50s) line (1, 40, 1m) step (40, 1, 5, 8s).
   
 где:
 const (1,50s) - постоянная нагрузка в один рпс в течение 50 секунд  
 line (1, 40, 1m) - линейно возрастающая нагрузка с 1 до 40 рпс в течение 1 минуты
 step (40, 1, 5, 8s) - ступенчатое понижение нагрузки с 40 до 1 рпс с шагом в 5 рпс и длительностью каждого шага 8 секунд
 uris - для тестов используем 2 страницы - корневую и поисковую
 headers = [Host localhost] - отсылаемый заголовок 
 
Теперь запускаем сам яндекс-танк:

> yandex-tank

После чего в консольном экране начинает выводиться информация:

Вот этот кусок вывода - усредненные значения таймингов - т.е. время на коннект и т.д. - в данном случае везде все очень быстро:

  Avg Times (all / 14 RPS / last):
   Overall:  0   / 0 	 / 0   
   Connect:  0   / 0 	 / 0   
     Send:   0   / 0 	 / 0   
   Latency:  0   / 0 	 / 0   
   Receive:  0   / 0 	 / 0   
 
Cumulative Percentiles - накопительная часть. Times for 1 RPS - линейно возрастающая статистика. HTTP for 14 RPS - агрегационная статистика по ошибкам и обьемам запросов.

В правой части экрана - информация о том, куда стреляем, какими патронами, какая нагрузка, Сразу после запуска теста в веб-броузере можно открыть адрес http://localhost:8080/, где в режиме реального времени можно смотреть процесс тестирования.

Все результаты складываются в текущую папку test

Для тестирования урлов по защищенному протоколу ssl можно использовать следующий сценарий:

 [phantom]
 address=remote_site:443
 rps_schedule = line (1, 100, 1m) const (100, 1h).
 ssl=1
 uris = /
   /search.html
 headers = [Accept-Encoding:gzip]
   [Cookie: some-cookies]
 uris = /  
 

Перед тем, как начинать тестировать сайт, расположенный не в локальной сети, а в удаленной, сначала убедитесь в том, что путь не очень далек:

> traceroute remote_host

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

Википедия

Documentation

Оставьте свой комментарий !

Ваше имя:
Комментарий:
Оба поля являются обязательными

 Автор  Комментарий к данной статье