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
Последние статьи :
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
  SQL 30.07   
  JFS 10.06   
  B-trees 01.06   
 
TOP 20
 Go Web ...516 
 Steve Pate 3...417 
 Rodriguez 6...398 
 Trees...379 
 TCP 3...364 
 Rodriguez 2...355 
 Rubni-Corbet -> Глав...343 
 Daniel Bovet 3...324 
 Robert Love 3...323 
 Стивенс 9...322 
 UML 3...321 
 Максвелл 1...318 
 Максвелл 1...318 
 Steve Pate 1...318 
 B.Blunden 1...316 
 Robert Love 2...315 
 Mod_perl 2...315 
 Robbins 1...314 
 Daniel Bovet 4...314 
 Rubni-Corbet -> Глав...306 
 
  01.04.2017 : 2166403 посещений 

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

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

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

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