Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf ·...

107
Я.Субботник, Москва, 28 июля, 2012 года Олесь Писаренко Яндекс.Танк Руководитель службы нагрузочного тестирования

Upload: others

Post on 10-Feb-2020

37 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Я.Субботник,  Москва,  28  июля,  2012  года  

 

 

 

Олесь  Писаренко  

Яндекс.Танк  

Руководитель службы нагрузочного тестирования

Page 2: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

 

 

Содержание  

2  

Page 3: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

•  Яндекс.Танк  

 

 

Содержание  

3  

Page 4: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

•  Яндекс.Танк  

•  Особенности  

 

 

Содержание  

4  

Page 5: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

•  Яндекс.Танк  

•  Особенности  

•  Простые  примеры  

 

 

Содержание  

5  

Page 6: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

•  Яндекс.Танк  

•  Особенности  

•  Простые  примеры  

•  Немного  хардкора  

 

 

Содержание  

6  

Page 7: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

•  Яндекс.Танк  

•  Особенности  

•  Простые  примеры  

•  Немного  хардкора  

•  Ссылки  

 

Содержание  

7  

Page 8: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Жаргонарий  

 

 

8  

Page 9: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Жаргонарий  

 

 

9  

l   Танк  —  источник  нагрузки  

 

Page 10: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Жаргонарий  

 

 

10  

l   Танк  —  источник  нагрузки  

l   Мишень  —  объект  нагрузки  

 

Page 11: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Жаргонарий  

 

 

11  

l   Танк  —  источник  нагрузки  

l   Мишень  —  объект  нагрузки  

l   Стрельба  —  тест  

 

Page 12: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Жаргонарий  

 

 

12  

l   Танк  —  источник  нагрузки  

l   Мишень  —  объект  нагрузки  

l   Стрельба  —  тест  

l   Патрон  —  запрос  к  объекту  нагрузки  

 

Page 13: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Жаргонарий  

 

 

13  

l   Танк  —  источник  нагрузки  

l   Мишень  —  объект  нагрузки  

l   Стрельба  —  тест  

l   Патрон  —  запрос  к  объекту  нагрузки  

l   Лента  —  последовательность  запросов  

Page 14: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Яндекс.Танк  

 

 

14  

Page 15: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Яндекс.Танк  

 

 

15  

l   Производительный  

 

Page 16: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Яндекс.Танк  

 

 

16  

l   Производительный  

l   Простой  

 

Page 17: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Яндекс.Танк  

 

 

17  

l   Производительный  

l   Простой  

l   Opensource  (as  is)  

Page 18: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Движок  Яндекс.Танка  

 

 

18  

Phantom:  

Высокопроизводительный  вебсервер,  прокси,  клиент.    

Разработчик  -­‐  Евгений  Мамчиц  

hips://github.com/mamchits/phantom  

 

Page 19: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  истории  

 

 

19  

Подробнее  здесь:  

«Вебсервер  Phantom»  

докладчик  Влад  Селиверстов  

hip://clck.ru/1Knyv  

 

Page 20: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  истории  

 

 

20  

О  нашем  инструменте:  

«Танки  в  Лунапарке»  

докладчик  Андрей  Кузьмичев  

hip://clck.ru/1Ko-­‐z  

 

Page 21: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Особенности  

21  

Page 22: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Особенности  

l   Консольный  

 

22  

Page 23: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Особенности  

l   Консольный  

l   Linux-­‐only  

 

23  

Page 24: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Особенности  

l   Консольный  

l   Linux-­‐only  

l   Hit-­‐based  

 

24  

Page 25: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Особенности  

l   Консольный  

l   Linux-­‐only  

l   Hit-­‐based  

l   Модульный  

25  

Page 26: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Что  умеет    

26  

Page 27: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Что  умеет    

l   HTTP/HTTPS/Stateless  

 

27  

Page 28: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Что  умеет    

l   HTTP/HTTPS/Stateless  

l   IPv4/IPv6  

 

28  

Page 29: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Что  умеет    

l   HTTP/HTTPS/Stateless  

l   IPv4/IPv6  

l   До  100к  запросов/cек    

29  

Page 30: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Что  умеет    

l   HTTP/HTTPS/Stateless  

l   IPv4/IPv6  

l   До  100к  запросов/cек    

l   «Раскладка»  времён  

 

30  

Page 31: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Что  умеет    

l   HTTP/HTTPS/Stateless  

l   IPv4/IPv6  

l   До  100к  запросов/cек    

l   «Раскладка»  времён  

l   Многое  другое  

31  

Page 32: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Сразу  в  лоб  

Графиков  не  будет  

32  

Page 33: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Собрались  

33  

Page 34: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Установка  

 

 

34  

Требования:  

l   Ubuntu  Server/Desktop  

l   32/64bit  

l   Lucid/Precise  

Page 35: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Установка    

 

 

35  

# Ubuntu Lucid deb http://mirror.yandex.ru/mirrors/tank common main deb http://mirror.yandex.ru/mirrors/tank lucid main

Добавляем необходимые репозитории

# Ubuntu Precise deb http://mirror.yandex.ru/mirrors/tank common main deb http://mirror.yandex.ru/mirrors/tank precise main

Page 36: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Установка    

 

 

36  

$ sudo apt-get update

$ sudo apt-get install yandex-load-tank-base

$ dpkg -l | grep tank ii yandex-load-tank-base

Page 37: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Подготовка  $ lunapark ==== Welcome to Lunapark ==== Usage: lunapark AMMO-FILE [OPTIONS] Try `lunapark --help' for more information.

 

 

 

37  

$ nano load.conf

Page 38: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

Тестирование  HTTP  сервиса  постоянной  нагрузкой  в  10  рпс.    

Запрашиваем  корневую  страницу.    

 

 

38  

Page 39: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

39  

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: uri = /

Page 40: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

40  

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: uri = /

Page 41: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

41  

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: uri = /

Page 42: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

42  

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: uri = /

Page 43: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

43  

$ lunapark ==== Welcome to Lunapark ==== doctor-desktop.yandex.ru (doctor) phantom=0.14.0 yandex-load-tank=N/A ammo=/home/doctor/10/ammo_20120725-180420.txt ==== Stepper ==== Creating cases tree: 100% Case: 3. Ammo type: uri Ammo Generating: 100% lunapark: starting preproc... Done

Запускаем стрельбу

Page 44: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

44  

Page 45: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

45  

Page 46: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

46  

Page 47: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

47  

Page 48: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

48  

Page 49: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

49  

Page 50: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

50  

Page 51: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  1  

51  

Page 52: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  2  

Тестирование  HTTP  сервиса  линейно-­‐возрастающей  нагрузкой  до  100  рпс.    

Запрашиваем  корневую  страницу.    

Используем  IPv6  +  SSL  

 

 

52  

Page 53: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  2  

53  

$cat load.conf # Tank Config File address=0:0:0:0:0:0:0:1:443 # load = line (1,100,10m) #Схема нагрузки ssl=1 # включение режима SSL # Перечисление заголовков и GET запросов: uri = /

Page 54: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  2  

54  

Page 55: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  3  

Тестирование  HTTP  сервиса  ступенчато-­‐возрастающей  нагрузкой  до  100  рпс.    

Запрашиваем  корневую  страницу.    

Используем  IPv6  +  SSL  

 

 

55  

Page 56: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  3  

56  

$cat load.conf # Tank Config File address=0:0:0:0:0:0:0:1:443 # load = step (1,100,10,1m) #Схема нагрузки ssl=1 # включение режима SSL # Перечисление заголовков и GET запросов: uri = /

Page 57: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  3  

57  

Page 58: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  4  

Тестирование  HTTP  сервиса  c  прогревом,  линейно-­‐ступенчато-­‐возрастающей  нагрузкой  до  30  рпс  с  одним  «спайком»  до  100  рпс  и  плавным  снижением  нагрузки.    

Запрашиваем  корневую  страницу.    

Используем  IPv6  +  SSL  

 

 58  

Page 59: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  4  

59  

$cat load.conf # Tank Config File address=0:0:0:0:0:0:0:1:443 # load = const(1,1m), line(1,10,1m), step(10,30,10,1m) load = const(30,1m), const(100,1), line(100,1,1m) ssl=1 # включение режима SSL # Перечисление заголовков и GET запросов: uri = /

Page 60: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  4  

60  

Page 61: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  5  

Тестирование  HTTP  сервиса  постоянной  нагрузкой  10  рпс.    

Запрашиваем  несколько  страниц  с  определенными  заголовками.    

Используем  IPv6  +  SSL  

 

 61  

Page 62: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  5  

62  

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = example.com uri = / uri = /buy

Page 63: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  5  

63  

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = example.com uri = / uri = /buy

Page 64: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  5  

64  

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = example.com uri = / uri = /buy

Page 65: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Пример  5  

65  

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = example.com uri = / uri = /buy

Page 66: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Это  были  цветочки  

66  

Page 67: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Да  сколько  можно!?  

 

 

67  

Потерпите,  мы  уже  прошли  половину  

Page 68: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

68  

Page 69: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

69  

Что делать в сложных случаях ?

Page 70: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

70  

Как выглядит обычный HTTP запрос?

Page 71: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

71  

Request-Line

Request Headers

Data (OPTIONAL)

Page 72: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

72  

POST / HTTP/1.1

Host: example.com Content-Length:3 Connection: Close

uho

Page 73: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

73  

Запрос для Яндекс.Танка будет таким:

80 POST / HTTP/1.1 Host: example.com Content-Length:3 Connection: Close uho

Page 74: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

74  

Запрос для Яндекс.Танка будет таким:

80 POST / HTTP/1.1 Host: example.com Content-Length:3 Connection: Close uho

Page 75: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

75  

Запрос для Яндекс.Танка будет таким:

80 POST / HTTP/1.1 Host: example.com Content-Length:3 Connection: Close uho Сохраним этот запрос в файл ammo.txt

Page 76: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

76  

Упростим load.conf

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = target.yandex.net uri = / uri = /buy

Page 77: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

77  

Упростим load.conf

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = target.yandex.net uri = / uri = /buy

Page 78: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

 

 

78  

Упростим load.conf

$cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки

Page 79: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

79  

$ lunapark ammo.txt ==== Welcome to Lunapark ==== doctor-desktop.yandex.ru (doctor) phantom=0.14.0 yandex-load-tank=N/A ammo=/home/doctor/10/ammo.txt ==== Stepper ==== Creating cases tree: 100% Case: 3. Ammo type: request Ammo Generating: 100% lunapark: starting preproc... Done

Запускаем стрельбу

Page 80: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

80  

$ lunapark ammo.txt ==== Welcome to Lunapark ==== doctor-desktop.yandex.ru (doctor) phantom=0.14.0 yandex-load-tank=N/A ammo=/home/doctor/10/ammo.txt ==== Stepper ==== Creating cases tree: 100% Case: 3. Ammo type: request Ammo Generating: 100% lunapark: starting preproc... Done

Запускаем стрельбу

Page 81: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

81  

Ура! Стреляет!

Page 82: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

82  

А теперь склеим несколько запросов и запишем их в файл ammo.txt друг за другом

Page 83: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

83  

80 POST / HTTP/1.1 Host: example.com Content-Length:3 Connection: Close uho

80 POST / HTTP/1.1 Host: example.com Content-Length:3 Connection: Close nos

80 POST / HTTP/1.1 Host: example.com Content-Length:3 Connection: Close rot

+

+

=

Page 84: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

84  

Мы получили «ленту» запросов

Page 85: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

85  

Мы получили «ленту» запросов

Page 86: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Немного  хардкора  

86  

$ lunapark ammo.txt ==== Welcome to Lunapark ==== doctor-desktop.yandex.ru (doctor) phantom=0.14.0 yandex-load-tank=N/A ammo=/home/doctor/10/ammo.txt ==== Stepper ==== Creating cases tree: 100% Case: 3. Ammo type: request Ammo Generating: 100% lunapark: starting preproc... Done

Запуск аналогичен одиночному запросу:

Page 87: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Можно  перед0хнУть  

87  

Page 88: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Еще  немного...  

88  

Page 89: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Еще  немного...  

89  

$ head phout* ==> phout_20120725-172045.txt <== 1343222446.181 front_page 1533 273 29 1002 229 1238 18 297 0 200 1343222446.288 front_page 1261 681 14 519 47 1144 18 297 0 200 1343222446.388 front_page 926 365 18 506 37 830 18 297 0 200 1343222446.488 front_page 883 242 11 600 30 811 18 297 0 200 1343222446.588 front_page 521 214 9 267 31 437 18 297 0 200 1343222446.688 front_page 877 228 15 524 110 720 18 297 0 200 1343222446.788 front_page 1240 677 15 506 42 1145 18 297 0 200 1343222446.888 front_page 1102 319 16 722 45 1006 18 297 0 200 1343222446.988 front_page 857 246 14 552 45 757 18 297 0 200

Все результаты теста сбрасываются в файл phout.txt

Page 90: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Еще  немного...  

90  

phout.txt - основное хранилище не агрегированных данных

Page 91: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Еще  немного...  

91  

Формат phout.txt хорошо описан в документации

Page 92: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Еще  немного...  

92  

Формат phout.txt хорошо описан в документации Зачем?

Page 93: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Затем,  что...  

93  

phout.txt

loadosophia

DB

API

gnuplot

JS

Excel

???

Page 94: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

А  могу  ли  я...?  Да!  

94  

POST

GET

WEBDAV GZIP

COOKIE

POP3

SMTP URLENCODE

MULTIPART

CGI PARAM

SPIKE TEST THREAD TEST

REQ FILE

TAGS

LOOP

CUSTOM TIMINGS

HEADERS

RECOVERY TEST

Page 95: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

А  могу  ли  я...?  Да!  

95  

POST

GET

WEBDAV GZIP

COOKIE

POP3

SMTP URLENCODE

MULTIPART

CGI PARAM

SPIKE TEST THREAD TEST

REQ FILE

TAGS

LOOP

CUSTOM TIMINGS

HEADERS

RECOVERY TEST README.TXT

Page 96: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Почти  всё  

96  

Page 97: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Полезные  ссылки  

 

 

97  

Приготовились ...3..2..1

Page 98: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Phantom  

 

 

98  

http://clck.ru/1KRej

Евгений Мамчиц

Page 99: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Phantom  ARM    

 

 

99  

http://clck.ru/1KRhJ

Дмитрий Билунов

Page 100: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Phantom  Docs    

 

 

100  

http://clck.ru/1KRhX

Григорий Комиссаров

Page 101: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Firebat  console    

 

 

101  

http://clck.ru/1KRhp

Григорий Комиссаров

Page 102: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Loadosophia    

 

 

102  

http://clck.ru/1KodD

Андрей Похилько

Page 103: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Яндекс.Танк    

 

 

103  

http://clck.ru/1KRiB

Page 104: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Yandex-­‐load    

 

 

104  

http://clck.ru/1KRiP

Page 105: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Спасибо  этим  ребятам!    

 

 

105  

Page 106: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Вопросы  

 

 

106  

Page 107: Яндекс.Танк&cache-ash04.cdn.yandex.net/.../msk_pisarenko.pdf · Я.Субботник,,Москва,,28,июля,,2012,года,,, ОлесьПисаренко Яндекс.Танк&

Руководитель  службы  НТ  

doctor@yandex-­‐team.ru  

twiier:  @doctornkz  

 

Олесь  Писаренко