Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса
Андрей Похилько
Рук. группы НТ Рекламных технологий
Нагрузочное
тестирование
типичного сервиса
Обзор
1. Место НТ в нашем мире
2. Наш взгляд на сервисы
3. Что мы ценим в инструментах
4. Универсальная процедура НТ
А разве есть такая теория?
Теория НТ
Когда в товарищах согласья нет...
●
Разногласия в терминах
●
Границы ответственности НТ
6
Инженерия производительности
Это разработка, тестирование и эксплуатация
и НТ – её часть
Performance Engineering
7
Планирование мощностей
“Сколько серверов понадобится сейчас?
А сколько – в будущем?”
Capacity Planning
8
Нагрузочное тестирование
Load Testing
Поставщик информации для всех
9
Наша задача
Выяснить ключевые
показатели производительности
для данного сервиса
Ключевые показатели
11
Ёмкость
Capacity
12
Ёмкость
●
Ёмкость = максимальная пропускная способность
(max throughput)
●
Повышается от параллелизма
●
Единицы измерения: RPS, VU
Capacity
13
Времена ответов
Response Times
14
Времена ответов
Response Times
• Единицы измерения: миллисекунды для % ответов
• Влияет на ёмкость
• Влияет на удовлетворенность пользователей
15
Надёжность
Stability
16
Надёжность
Stability
• Как долго можем работать без остановки?
• Как быстро восстановимся после проблем?
• Единицы измерения: часы
17
Еще показатели
• Доступность
• Масштабируемость
• Критический ресурс
Смотрим на сервисы
Закрытые и открытые
●
Это не про систему, а про пользователей сервиса
●
Суть – реакция нагрузки на деградацию сервиса
●
На практике всё не так однозначно
20
Закрытая модель нагрузки
СЕРВЕР
Очередь
Интенсивность прихода запросов зависит от времени ответа
21
Открытая модель нагрузки
СЕРВЕР
Очередь
Интенсивность прихода запросов не зависит от времени ответа
22
Stateless и Stateful
• HTTP
• DNS
• FTP
• IMAP / SMTP / POP3
Stateful протокол гораздо сложней поддержать в
инструменте
23
Знакомый пример
MySQL
nginx
FastCGI
open
stateless
closed
stateful
24
«Типичный» интернет-сервис?
●
Открытый и Stateless на фронтэнде
●
Закрытый на бэкенде
●
Нужно уметь тестировать любые
25
Ожидаемая нагрузка и SLA
• Пиковая рабочая нагрузка и запас
• SLA по времени ответа
• Наработка на отказ, время восстановления
• Полезно иметь ожидания – есть с чем сравнивать
Смотрим на инструменты
Сценарные и hit-based
●
Сценарий ближе к правде жизни
●
Hit-based это вырожденный сценарий
●
Сведение сценариев к hit-based
Открытая и закрытая
нагрузка
●
Закрытый отрабатывает расписание VU
●
Открытый отрабатывает расписание RPS
●
Суть разницы – реакция на деградацию сервиса
Гвоздь именно здесь
Телеметрия
Зачем на самолетах “черные
ящики”?
Хороший инструмент может
собрать любые метрики
Результаты тестов
●
Хранение, доступное команде
●
Интерактивные отчеты
●
Агрегаты и таймлайны
●
Сравнение тестов
●
Регрессионные последовательности
●
API для автоматизации
Устройство Яндекс.Танка
Цель разработки Яндекс.Танка ―
сделать НТ удобным
Ядро
Ядротанка
Агрегатор
Конфигурирование + Артефакты
Связь между модулями
Рабочий цикл теста
Отчеты
Автостопы
JMeter
BFG
Телеметрия
ab
ShellExec Консольный вывод
ResourceCheck
Стрелялки
●
phantom – (а)синхнонный hit-based
●
ab – синхронный hit-based
●
JMeter – (a)синхронный сценарный
●
BFG – смотря что реализовать
Сбор телеметрии
●
Linux-specific
●
Требует SSH-доступа без пароля (по ключу)
●
Сбор с нескольких хостов
●
Кастомные метрики
●
Startup/Shutdown хуки
Анализ результатов
●
Консольный вывод и WebOnline
●
Модуль отчета с графиками
●
Заливка в Graphite
●
Артефакты для самообслуживания
Прочие плюшки
●
Куча опций с дефолтами
●
Автостопы
●
Shellexec-хуки
●
Готовность к оберткам
●
Готовность к дополнениям
Побалуй себя...
Резюме первой части
●
НТ – малая толика инженерии производительности
●
Сервисы: открытые и закрытые, stateless и stateful
●
Инструменты: сценарные и hit-based, (а)синхронные
●
Телеметрия бесценна
●
В Яндекс.Танке есть всё необходимое
Передышка
Пауза
Процедура НТ
I. Ёмкость синхронным инструментом
II. Ёмкость асинхронным (если нужно)
III. Времена ответа
IV. Восстановление
V. Стабильность
Подготовка
●
На каких серверах тестируем
●
Кто всё настраивает
●
Доступы и полномочия
●
Написание сценариев
●
Подготовка данных
Ёмкость закрытой нагрузкой
Ёмкость открытой нагрузкой
Времена ответа
Восстановление
Стабильность
Угадайка 1
https://www.youtube.com/watch?v=mkgDDCMKXXc
Угадайка 2
http://rutube.ru/video/be1e199c51d132124e6f68474fe69963/
Финал тестирования
Ёмкость измерена: выдерживаем X RPS, запас N крат
Времена ответов: P% ответов укладываются в K мс
Восстановление после сбоя занимает: Y минут
Время стабильной непрерывной работы: от T часов
Андрей Похилько
Руководитель группы
нагрузочного тестирования
рекламных технологий
apc4@ya.ru
Спасибо!

More Related Content

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