Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
      Languages 
      Kernels 
      Packages 
      Books 
      Tests 
      OS 
      Forum 
      Математика 
NEWS
Последние статьи :
  Тренажёр 16.01   
  Эльбрус 05.12   
  Алгоритмы 12.04   
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
 
TOP 20
 Linux Kernel 2.6...3421 
 MINIX...3088 
 Solaris...2963 
 LD...2960 
 William Gropp...2282 
 Trees...2153 
 Rodriguez 6...2073 
 C++ Templates 3...1985 
 Kamran Husain...1940 
 Secure Programming for Li...1856 
 Максвелл 5...1764 
 DevFS...1754 
 Part 3...1740 
 Go Web ...1713 
 Ethreal 4...1671 
 Стивенс 9...1668 
 Stein-MacEachern-> Час...1663 
 Arrays...1642 
 Максвелл 1...1638 
 ffmpeg->tutorial...1587 
 
  01.01.2024 : 3621733 посещений 

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

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

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

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