49

Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

  • Upload
    yandex

  • View
    1.935

  • Download
    8

Embed Size (px)

DESCRIPTION

Нагрузочное тестирование интернет-сервиса начинается с того, что мы выясняем ожидаемый профиль нагрузки. Вооружившись подходящим инструментом, мы проводим типовую последовательность тестов и измеряем основные показатели производительности: ёмкость, скорость и надёжность. При этом особое внимание необходимо уделять наблюдению за состоянием ресурсов тестируемой системы.

Citation preview

Page 1: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса
Page 2: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Андрей ПохилькоРук. группы НТ Рекламных технологий

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

Page 3: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Обзор

1. Место НТ в нашем мире

2. Наш взгляд на сервисы

3. Что мы ценим в инструментах

4. Универсальная процедура НТ

Page 4: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

А разве есть такая теория?

Теория НТ

Page 5: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Когда в товарищах согласья нет...

● Разногласия в терминах

● Границы ответственности НТ

Page 6: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

6

Инженерия производительности

Это разработка, тестирование и эксплуатация

и НТ – её часть

Performance Engineering

Page 7: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

7

Планирование мощностей

“Сколько серверов понадобится сейчас?А сколько – в будущем?”

Capacity Planning

Page 8: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

8

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

Поставщик информации для всех

Page 9: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

9

Наша задача

Выяснить ключевые показатели производительности

для данного сервиса

Page 10: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Ключевые показатели

Page 11: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

11

ЁмкостьCapacity

Page 12: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

12

Ёмкость

● Ёмкость = максимальная пропускная способность(max throughput)

● Повышается от параллелизма

● Единицы измерения: RPS, VU

Capacity

Page 13: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

13

Времена ответовResponse Times

Page 14: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

14

Времена ответовResponse Times

• Единицы измерения: миллисекунды для % ответов

• Влияет на ёмкость

• Влияет на удовлетворенность пользователей

Page 15: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

15

НадёжностьStability

Page 16: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

16

НадёжностьStability

• Как долго можем работать без остановки?

• Как быстро восстановимся после проблем?

• Единицы измерения: часы

Page 17: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

17

Еще показатели

• Доступность

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

• Критический ресурс

Page 18: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Смотрим на сервисы

Page 19: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Закрытые и открытые

● Это не про систему, а про пользователей сервиса

● Суть – реакция нагрузки на деградацию сервиса

● На практике всё не так однозначно

Page 20: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

20

Закрытая модель нагрузки

СЕРВЕР

Очередь

Интенсивность прихода запросов зависит от времени ответа

Page 21: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

21

Открытая модель нагрузки

СЕРВЕР

Очередь

Интенсивность прихода запросов не зависит от времени ответа

Page 22: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

22

Stateless и Stateful

• HTTP• DNS

• FTP• IMAP / SMTP / POP3

Stateful протокол гораздо сложней поддержать в инструменте

Page 23: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

23

Знакомый пример

MySQL

nginx

FastCGI

openstateless

closedstateful

Page 24: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

24

«Типичный» интернет-сервис?

● Открытый и Stateless на фронтэнде

● Закрытый на бэкенде

● Нужно уметь тестировать любые

Page 25: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

25

Ожидаемая нагрузка и SLA

• Пиковая рабочая нагрузка и запас

• SLA по времени ответа

• Наработка на отказ, время восстановления

• Полезно иметь ожидания – есть с чем сравнивать

Page 26: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Смотрим на инструменты

Page 27: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Сценарные и hit-based

● Сценарий ближе к правде жизни

● Hit-based это вырожденный сценарий

● Сведение сценариев к hit-based

Page 28: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Открытая и закрытая нагрузка

● Закрытый отрабатывает расписание VU

● Открытый отрабатывает расписание RPS

● Суть разницы – реакция на деградацию сервиса

Гвоздь именно здесь

Page 29: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Телеметрия

Зачем на самолетах “черные ящики”?

Хороший инструмент может собрать любые метрики

Page 30: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Результаты тестов

● Хранение, доступное команде

● Интерактивные отчеты

● Агрегаты и таймлайны

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

● Регрессионные последовательности

● API для автоматизации

Page 31: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Устройство Яндекс.Танка

Цель разработки Яндекс.Танка ― сделать НТ удобным

Page 32: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Ядро

Яд

ро т

ан

ка

Агрегатор

Конфигурирование + Артефакты

Связь между модулями

Рабочий цикл теста

Отчеты

Автостопы

JMeter

BFG

Телеметрия

ab

ShellExec Консольный вывод

ResourceCheck

Page 33: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Стрелялки

● phantom – (а)синхнонный hit-based

● ab – синхронный hit-based

● JMeter – (a)синхронный сценарный

● BFG – смотря что реализовать

Page 34: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Сбор телеметрии

● Linux-specific

● Требует SSH-доступа без пароля (по ключу)

● Сбор с нескольких хостов

● Кастомные метрики

● Startup/Shutdown хуки

Page 35: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

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

● Консольный вывод и WebOnline

● Модуль отчета с графиками

● Заливка в Graphite

● Артефакты для самообслуживания

Page 36: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Прочие плюшки● Куча опций с дефолтами

● Автостопы

● Shellexec-хуки

● Готовность к оберткам

● Готовность к дополнениям

Побалуй себя...

Page 37: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Резюме первой части

● НТ – малая толика инженерии производительности

● Сервисы: открытые и закрытые, stateless и stateful

● Инструменты: сценарные и hit-based, (а)синхронные

● Телеметрия бесценна

● В Яндекс.Танке есть всё необходимое

Page 38: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Передышка

Пауза

Page 39: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Процедура НТ

I. Ёмкость синхронным инструментом

II. Ёмкость асинхронным (если нужно)

III. Времена ответа

IV. Восстановление

V. Стабильность

Page 40: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Подготовка

● На каких серверах тестируем

● Кто всё настраивает

● Доступы и полномочия

● Написание сценариев

● Подготовка данных

Page 41: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Ёмкость закрытой нагрузкой

Page 42: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Ёмкость открытой нагрузкой

Page 43: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Времена ответа

Page 44: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Восстановление

Page 45: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Стабильность

Page 46: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Угадайка 1

https://www.youtube.com/watch?v=mkgDDCMKXXc

Page 47: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Угадайка 2

http://rutube.ru/video/be1e199c51d132124e6f68474fe69963/

Page 48: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

Финал тестирования

Ёмкость измерена: выдерживаем X RPS, запас N крат

Времена ответов: P% ответов укладываются в K мс

Восстановление после сбоя занимает: Y минут

Время стабильной непрерывной работы: от T часов

Page 49: Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса

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

Руководитель группы нагрузочного тестированиярекламных технологий

[email protected]

Спасибо!