CodeFest 2011. Нугуманов Н. — Нагрузочное тестирование: Как?
1. Нагрузочное тестирование: как?
Нурлан Нугуманов
Инженер нагрузочного тестирования
Codefest, Новосибирск, 19-20 марта 2011 года
1
Цель НТ - дать достоверный прогноз жизни сервиса:
летит сервис или не летит. И что самое _важное_ - будет ли он лететь в будущем, когда
сервису привинтят новые фишки
2. 4 ЭТАПА СТАНДАРТНОГО ЦИКЛА НТ
Анализ Что тестируем?
Создание ТО Где это будет?
Выполнение
Как же именно тестируем?
тестов
Осмысление И что теперь?
2
Тесты занимают 20-30% от всего времени.
Выполнение тестов - важнейший этап, дающий данные для анализа
3. Нагрузка
Время выполнения теста
3
Отвечает на вопрос: Когда сломается?”
“+” Длительность теста <15m
“-” Оценка приблизительна. Неясна причина поломки: нагрузка или периодические
события? Выборка времен ответов в каждый момент времени мала.
4. Нагрузка
Время выполнения теста
4
Отвечает на вопрос: “Работает сервис на данной нагрузке?”
Позволяет: 1) увидеть периоды, 2) оценить стабильность сервиса (есть ли деградация), 3)
получить выборку времен ответов
--
На ОчДлинном тесте: точное понимание как работает сервис, оценка стабильности/
деградации.
На коротком тесте: только получение выборки данных для оценки времен ответов.
--
К вопросу о минимальной длительности теста для сбора достоверных данных -> к
МатCтату
5. Нагрузка
Время выполнения теста
5
Грубая оценка поведения на линейном участке и точная оценка “где сломается”
“-” Не видим стабильность
“+” Быстрый и достаточно точный тест
6. Нагрузка
Время выполнения теста
6
Ответ на вопрос:”Как ведет себя сервис если нужно _быстро_ выделить ресурсы?”
а) сломается совсем, б) долгие ответы, в) очередь + 503 на все что не влезло в очередь
--
при очень узком пике можно ничего не увидеть
7. Нагрузка
Время выполнения теста
7
Stress (на этапе роста нагрузки) + Recovery (на спаде).
Смотрим:
1) Как сломается (корка, 500)
2) Как починится (сам, watchdog, звонок админу)
3) Как быстро починится
Ширина постоянных нагрузок - должна быть достаточной для завершения переходных
процессов
8. Объем данных в БД
3
2
1
Тесты
8
Ответ на вопрос: “Что будет при росте объема хранимых данных?”
Серия тестов на каждом объеме данных
9. Объем данных в БД
3
2
1
Тесты
8
Ответ на вопрос: “Что будет при росте объема хранимых данных?”
Серия тестов на каждом объеме данных
17. Нагрузка
Время выполнения теста
16
Оценка поведения при росте нагрузки и скорость восстановления при различных по
величине нагрузках.
Примеры:
а) балансер по кол-ву открытых соединений
б) root.yandex.ru - нагрузка созданная людьми
в) отказ одного из ДЦ. “Водопроводчики на экскаваторе”
18. Мильон тестов..
17
Подумайте, на какой вопрос даст ответ вам ваш тест
19. Метрики: времена ответов
18
Поговорим о времени.
Что считать временем ответа?
пример: 10rps -> ~10 _разных_ значений времен обработки запросов каждую секунду.
Что для этого сервиса есть время ответа?
20. Среднее время ответа
Нагрузка
Время выполнения теста
19
Среднее время рулит? (ведь кажется, что все наглядно, легко посчитать)
21. Среднее время ответа
Нагрузка
Время выполнения теста
20
Выраженных пиков тоже не видно. Запускаемся?
22. login
1s 2s 3s 4s 5s 6s 7s 8s 9s 10s 11s 12s
show note
1s 2s 3s 4s 5s 6s 7s 8s 9s 10s 11s 12s
show all
1s 2s 3s 4s 5s 6s 7s 8s 9s 10s 11s 12s
21
Смотрим на сервис подробнее:
разные классы запросов
29. Время ответа Average 75% 80% 95%
Время выполнения теста
28
Были пики, чего не видно было на графике среднего времени.
Max. время показывает что пики есть, но не видно сколько медленных запросов было.
Поэтому не смотрите на max и avg, смотрите на процентиль.