Нагрузочное_тестирование: как?

30
Codefest, Новосибирск, 19-20 марта 2011 года Инженер нагрузочного тестирования Нурлан Нугуманов Нагрузочное тестирование: как? 1 Цель НТ - дать достоверный прогноз жизни сервиса: летит сервис или не летит. И что самое _важное_ - будет ли он лететь в будущем, когда сервису привинтят новые фишки

description

Презентация Нурлана Нугумаева, Инженера по тестированию Конференция CodeFest, март 2011

Transcript of Нагрузочное_тестирование: как?

Page 1: Нагрузочное_тестирование: как?

Codefest, Новосибирск, 19-20 марта 2011 года

Инженер нагрузочного тестированияНурлан Нугуманов

Нагрузочное тестирование: как?

1

Цель НТ - дать достоверный прогноз жизни сервиса:летит сервис или не летит. И что самое _важное_ - будет ли он лететь в будущем, когда сервису привинтят новые фишки

Page 2: Нагрузочное_тестирование: как?

4 ЭТАПА СТАНДАРТНОГО ЦИКЛА НТ

Что тестируем?

Создание ТО

Выполнение тестов

Осмысление

Анализ

Где это будет?

Как же именно тестируем?

И что теперь?

2

Тесты занимают 20-30% от всего времени. Выполнение тестов - важнейший этап, дающий данные для анализа

Page 3: Нагрузочное_тестирование: как?

Нагрузка

Время выполнения теста

3

Отвечает на вопрос: Когда сломается?”“+” Длительность теста <15m

“-” Оценка приблизительна. Неясна причина поломки: нагрузка или периодические события? Выборка времен ответов в каждый момент времени мала.

Page 4: Нагрузочное_тестирование: как?

Нагрузка

Время выполнения теста

4

Отвечает на вопрос: “Работает сервис на данной нагрузке?”Позволяет: 1) увидеть периоды, 2) оценить стабильность сервиса (есть ли деградация), 3) получить выборку времен ответов--На ОчДлинном тесте: точное понимание как работает сервис, оценка стабильности/деградации.На коротком тесте: только получение выборки данных для оценки времен ответов.--К вопросу о минимальной длительности теста для сбора достоверных данных -> к МатCтату

Page 5: Нагрузочное_тестирование: как?

Нагрузка

Время выполнения теста

5

Грубая оценка поведения на линейном участке и точная оценка “где сломается”“-” Не видим стабильность“+” Быстрый и достаточно точный тест

Page 6: Нагрузочное_тестирование: как?

Нагрузка

Время выполнения теста

6

Ответ на вопрос:”Как ведет себя сервис если нужно _быстро_ выделить ресурсы?”а) сломается совсем, б) долгие ответы, в) очередь + 503 на все что не влезло в очередь--при очень узком пике можно ничего не увидеть

Page 7: Нагрузочное_тестирование: как?

Нагрузка

Время выполнения теста

7

Stress (на этапе роста нагрузки) + Recovery (на спаде). Смотрим: 1) Как сломается (корка, 500)2) Как починится (сам, watchdog, звонок админу)3) Как быстро починитсяШирина постоянных нагрузок - должна быть достаточной для завершения переходных процессов

Page 8: Нагрузочное_тестирование: как?

Объем

данных в БД

Тесты

1

2

3

8

Ответ на вопрос: “Что будет при росте объема хранимых данных?”Серия тестов на каждом объеме данных

Page 9: Нагрузочное_тестирование: как?

Объем

данных в БД

Тесты

1

2

3

8

Ответ на вопрос: “Что будет при росте объема хранимых данных?”Серия тестов на каждом объеме данных

Page 10: Нагрузочное_тестирование: как?

9

Page 11: Нагрузочное_тестирование: как?

10

Page 12: Нагрузочное_тестирование: как?

“Как совместить горизонтальную и наклонную палочки?”

11

Page 13: Нагрузочное_тестирование: как?

12

Нужно давать время на1) прогрев кешей2) время на выделение ресурсов

Page 14: Нагрузочное_тестирование: как?

13

При подаче нагрузки без прогрева будут выбросы.

Page 15: Нагрузочное_тестирование: как?

Нагрузка

Время выполнения теста

14

Подробно наблюдаем когда перестают выполнятся требования SLA и когда сервис ломается напрочь

Page 16: Нагрузочное_тестирование: как?

Нагрузка

Время выполнения теста

15

Page 17: Нагрузочное_тестирование: как?

Нагрузка

Время выполнения теста

16

Оценка поведения при росте нагрузки и скорость восстановления при различных по величине нагрузках.Примеры: а) балансер по кол-ву открытых соединенийб) root.yandex.ru - нагрузка созданная людьмив) отказ одного из ДЦ. “Водопроводчики на экскаваторе”

Page 18: Нагрузочное_тестирование: как?

Мильон тестов..

17

Подумайте, на какой вопрос даст ответ вам ваш тест

Page 19: Нагрузочное_тестирование: как?

Метрики: времена ответов

18

Поговорим о времени.Что считать временем ответа?пример: 10rps -> ~10 _разных_ значений времен обработки запросов каждую секунду. Что для этого сервиса есть время ответа?

Page 20: Нагрузочное_тестирование: как?

Нагрузка

Время выполнения теста

Среднее время ответа

19

Среднее время рулит? (ведь кажется, что все наглядно, легко посчитать)

Page 21: Нагрузочное_тестирование: как?

Нагрузка

Время выполнения теста

Среднее время ответа

20

Выраженных пиков тоже не видно. Запускаемся?

Page 22: Нагрузочное_тестирование: как?

1s 2s 3s 4s 5s 6s 7s 8s 9s 10s11s12s

1s 2s 3s 4s 5s 6s 7s 8s 9s 10s11s12s

1s 2s 3s 4s 5s 6s 7s 8s 9s 10s11s12s

login

show note

show all

21

Смотрим на сервис подробнее:разные классы запросов

Page 23: Нагрузочное_тестирование: как?

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

login

show note

show all

avg = 0.4s

avg = 0.6s

avg = 0.9s

22

разное среднее

Page 24: Нагрузочное_тестирование: как?

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

login

show note

show all

avg = 0.4s95%<0.8s

avg = 0.6s95%<1s

avg = 0.9s95%<1.2s

23

разный 95й процентиль

Page 25: Нагрузочное_тестирование: как?

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

login

show note

show all

avg = 0.4s95%<0.8s

avg = 0.6s95%<1s

avg = 0.9s95%<1.2s

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

Summarize avg = 0.6s95%<1.05s

24

Агрегировав получили что-то абстрактное

Page 26: Нагрузочное_тестирование: как?

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

login

show note

show all

avg = 0.4s95%<0.8s

avg = 0.6s95%<1s

avg = 0.9s95%<1.2s

0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1s 1.1s 1.2s

Summarize avg = 0.6s95%<1.2s

25

Среднее время - sucks!Надо ориентироватьсяна процентили (time в которое укладывается %) + смотреть разные классы

Page 27: Нагрузочное_тестирование: как?

Время ответа

95%

80%75%

1s

26

Рисуем в каждую секунду процентиль для каждого класса запросов

Page 28: Нагрузочное_тестирование: как?

Время ответа

Время выполнения теста

Average

27

Page 29: Нагрузочное_тестирование: как?

Время ответа

Время выполнения теста

Average 75% 80% 95%

28

Были пики, чего не видно было на графике среднего времени.Max. время показывает что пики есть, но не видно сколько медленных запросов было. Поэтому не смотрите на max и avg, смотрите на процентиль.

Page 30: Нагрузочное_тестирование: как?

Нурлан Нугуманов• Инженер нагрузочного тестирования

• 119021, Россия, Москва,ул. Льва Толстого, 16

• +7 (495) 739-00-00+7 (495) 739-70-70 — факс

[email protected]

29