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
 Alg3...2143 
 Intel 386...782 
 Secure Programming for Li...682 
 Trees...661 
 Си за 21 день...577 
 2.0-> Linux IP Networking...574 
 Ethreal 1...567 
 Lists...564 
 Stein-MacEachern-> Час...561 
 Стивенс 1...554 
 Steve Pate 3...537 
 Ethreal 2...525 
 Rodriguez 6...500 
 Python...492 
 Стивенс 4...488 
 William Gropp...465 
 Advanced Bash Scripting G...456 
 Стивенс 5...427 
 Keogh 2...412 
 Комментарий...399 
 
  01.08.2020 : 2947670+ посещений 

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

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

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

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