Алексей Лавренюк - Организация нагрузочного...

31

Upload: yandex

Post on 30-Jun-2015

188 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Алексей Лавренюк - Организация нагрузочного тестирования
Page 2: Алексей Лавренюк - Организация нагрузочного тестирования

Организация нагрузочного тестирования

Алексей Лавренюк КИТ, 2014

Page 3: Алексей Лавренюк - Организация нагрузочного тестирования

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

- это когда 50 человек зажимают F5 НЕТ!

- эмуляция нагрузки + измерение времен ответа и параметров работы системы

3

Page 4: Алексей Лавренюк - Организация нагрузочного тестирования

Зачем проводить нагрузочное тестирование?

4

Page 5: Алексей Лавренюк - Организация нагрузочного тестирования

Не хватило ресурсов

время

обсл

ужен

ные

клие

нты

(в д

ень)

макс. производительностьож

идае

мый рос

т

испорченная репутация

потери

Page 6: Алексей Лавренюк - Организация нагрузочного тестирования

Быстрый интернет

В рекламе — «быстрый интернет», официальный сайт работает медленно

6

Page 7: Алексей Лавренюк - Организация нагрузочного тестирования

Узкие места в архитектуре

- выбирали решение, основываясь на советах и рекламе

- получили низкую производительность именно в вашем случае

- потеряли время и ресурсы на переделку с нуля

7

…на ней правда можно возить сервера?

Page 8: Алексей Лавренюк - Организация нагрузочного тестирования

Известный фреймворк

- выбрали известный фреймворк

- при передаче единственного числа добавлялась служебная информация

- ее размер на два порядка больше размера самого числа

8

упакуем для надежности

Page 9: Алексей Лавренюк - Организация нагрузочного тестирования

Масштабируемость

- стало не хватать ресурсов

- добавили второй сервер

- производительность выросла, но незначительно

- потеряли ресурсы и время на глубокую переделку в авральном режиме

9

если что, добавим второй тоннель

whoops!

Page 10: Алексей Лавренюк - Организация нагрузочного тестирования

Кривые масштабируемости

идеаль

ная масш

табируемост

ь

непараллельные части

затраты на коммуникацию

уровень параллелизма

прои

звод

ител

ьнос

ть

Page 11: Алексей Лавренюк - Организация нагрузочного тестирования

Где грабли и что с ними делать?

нехватка ресурсов

узкие места в архитектуре

плохая масштабируемость

11

нагрузочное тестирование

Page 12: Алексей Лавренюк - Организация нагрузочного тестирования

Идентификация рисков

определить предельную производительность

найти узкие места

оценить эффективность масштабирования

12

тактические боевые грабли

Page 13: Алексей Лавренюк - Организация нагрузочного тестирования

Анализ рисков

причины медленной работы (как ускорить)

эффективная оптимизация (где ускорить)

эффективный апгрейд (а может, просто досыпать железа)

что делать, когда все плохо?

13

НТ знакомит вас с собственным сервисом

Page 14: Алексей Лавренюк - Организация нагрузочного тестирования

Мониторинг рисков

следим за релизами (меняются программы)

следим за трендами (меняются данные)

14

Page 15: Алексей Лавренюк - Организация нагрузочного тестирования

Задача нагрузочного тестирования

Управление рисками, связанными с производительностью:

идентификация

анализ

мониторинг

15

Page 16: Алексей Лавренюк - Организация нагрузочного тестирования

Процесс нагрузочного тестирования

16

Page 17: Алексей Лавренюк - Организация нагрузочного тестирования

Сбор информации

- анализ архитектуры: компоненты, протоколы, конфигурации

- анализ требований: нагрузка, времена ответа, загруженность ресурсов

17

Page 18: Алексей Лавренюк - Организация нагрузочного тестирования

Подготовка инструментов

- тестовый стенд: машины, софт и мониторинг

- тестовые данные: базы данных и запросы

- генераторы нагрузки: машины и софт

18

Page 19: Алексей Лавренюк - Организация нагрузочного тестирования

Тестирование

- запуск тестов

- оперативное исправление недостатков

- … снова запуск тестов

19

Page 20: Алексей Лавренюк - Организация нагрузочного тестирования

Анализ результатов

Отчет:

- графики

- цифры

- выводы

20

Page 21: Алексей Лавренюк - Организация нагрузочного тестирования

Графики

Page 22: Алексей Лавренюк - Организация нагрузочного тестирования

Цифры

- максимальная производительность (число пользователей или операций в секунду)

- процентили времен ответа (в какое время укладывается 90% ответов)

- загруженность ресурсов

22

Page 23: Алексей Лавренюк - Организация нагрузочного тестирования

Выводы

- удовлетворяем ли требованиям?

- возможность масштабирования

- узкие места и особенности работы

23

Page 24: Алексей Лавренюк - Организация нагрузочного тестирования

Этапы нагрузочного тестирования

сбор информации

подготовка стенда и инструментов

тестирование

анализ результатов

автоматизация, если нужно

24

Page 25: Алексей Лавренюк - Организация нагрузочного тестирования

Яндекс.Танк и его место в процессе нагрузочного тестирования

25

Page 26: Алексей Лавренюк - Организация нагрузочного тестирования

Что такое Яндекс.Танк?

- не сервис, а open-source приложение

- не генератор, а удобная обертка над генераторами

26

Page 27: Алексей Лавренюк - Организация нагрузочного тестирования

Функция танка

превратить описание стрельбы и тестовые данные в отчет путем проведения тестирования

load.ini

ammo report.html

Page 28: Алексей Лавренюк - Организация нагрузочного тестирования

долго готовить генераторы — .deb пакет

долго обвешиваться мониторингами — мониторинг из коробки, мониторинг мишени по умолчанию

сложно запускать тесты — танк запускается из командной строки, можно автоматизировать

сложно конфигурировать — многоуровневая система конфигурации, удобные умолчания

сложно работать с результатами — отчет в формате .html с javascript-графиками

28

Проблемы, которые решает Танк

Page 29: Алексей Лавренюк - Организация нагрузочного тестирования

Что мы обсудили?

НТ снижает риски, связанные с производительностью

этапы НТ:

- сбор информации

- подготовка инструментов и стенда

- тестирование

- анализ результатов

Яндекс.Танк — это кирпичик в модульной системе для автоматизации нагрузочных тестов

29

Page 30: Алексей Лавренюк - Организация нагрузочного тестирования

Спасибо за внимание!

Алексей Лавренюк, Яндекс twitter: @direvius

Page 31: Алексей Лавренюк - Организация нагрузочного тестирования

Ссылки

https://github.com/yandex/yandex-tank — репозиторий Я.Танка

http://clubs.ya.ru/yandex-tank/ — клуб Я.Танка

31