31

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

  • Upload
    yandex

  • View
    2.182

  • Download
    2

Embed Size (px)

DESCRIPTION

Алексей Лавренюк расскажет об организации процесса нагрузочного тестирования: зачем нужно нагрузочное тестирование, на какие вопросы оно даст ответ, как снизить затраты временных и человеческих ресурсов на нагрузочное тестирование. Еще он коснется возможностей open-source инструмента Яндекс.Танк и его места в процессе нагрузочного тестирования.

Citation preview

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-load/yandex-tank — репозиторий Я.Танка

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

31