SlideShare a Scribd company logo
How I Learned
to Stop Worrying
and Love the BFG
Надежда Миргородская, Яндекс
2
План
› Что такое BFG
› Где его взять
› И что с ним делать
3
Что такое BFG
Часть Яндекс Танка
5
Aggregator
Uploader
Load Generator
…
Генераторы нагрузки
Phantom JMeter BFG
Производительность Высокая Средняя Средняя
Интерфейс Консоль GUI IDE
Сценарии? Нет Да Да
Язык сценариев - Java Python
6
BFG: pro et contra
▌Плюсы
› это код
› экосистема Питона
▌Минусы
› это код
› производительность не так высока
7
Где взять BFG
Это опенсорс
9
https://github.com/yandex/yandex-tank
https://overload.yandex.net
https://gitter.im/yandex/yandex-tank
И что с ним делать
Вопросы производительности
› Время ответа
› Доля ошибок
› Стабильность
› Предельная нагрузка
› Отказоустойчивость
11
Нам бы побыстрее: сценарий
12
BFG testware
› Сценарий
› Тестовые данные
› Конфигурационный файл
13
Сценарий BFG: класс LoadTest
class LoadTest(object):
def __init__(self, gun):
self.gun = gun
def get_state(self):
response = requests.get(get_state_url)
config = parse_state(response)
def apply(self):
requests.post(apply_url, data=config)
14
Добавляем измерения
class LoadTest(object):
def get_state(self):
with sef.gun.measure('get_state') as measure:
response = self.client.get_state()
measure['proto_code'] = response.status_code
result = parse_state(response)
15
Порядок вызовов: метод default
def default(self):
self.get_state(get_state_url)
self.apply(config)
until state == 'DONE’:
self.check_state()
16
Базовый конфиг
[bfg]
gun_type = ultimate
loop = 100
instances = 10
instances_schedule = const(10,10m)
ammofile = ./ammo.txt
[ultimate_gun]
module_path = ./
module_name = performance_test
17
Время ответа по запросам
18
Доля ошибок по запросам
19
Теги внутри тегов:
общее время транзакции
def default(self):
self.get_state()
with self.gun.measure("activated"):
with self.gun.measure("apply"):
self.apply()
with self.gun.measure("check_state"):
self.check_state()
20
Вопросы производительности
› Время ответа
› Доля ошибок
› Стабильность
› Предельная нагрузка
› Отказоустойчивость
21
Стабильность
22
Вопросы производительности
› Время ответа
› Доля ошибок
› Стабильность
› Предельная нагрузка
› Отказоустойчивость
23
Профиль нагрузки: интенсивность
▌instances_schedule
› instances_schedule = line(1,3,3m)
▌rps_schedule
› instances = 10
› rps_schedule = const(50,5m)
▌free_instances
› instances = 10
24
Подкладываем соломки
autostop = http(5xx, 30%, 60s)
autostop = time(1500s, 10m)
25
Стресс-тест
26
Вопросы производительности
› Время ответа
› Доля ошибок
› Стабильность
› Предельная нагрузка
› Отказоустойчивость
27
Отказ и восстановление
› Гасим реплику
› Проверяем состояния
› Фиксируем объем базы
28
Recovery test
29
Много тестов
› Load test
› Stress test
› Stability test
› Recovery test
› Volume test
30
Profit!
› Повторяемость
› Входит в набор регрессионных тестов
› Однородность с функциональными тестами
› Легко вносить изменения
31
szypulka@yandex-team.ru
Спасибо за внимание!
Надежда Миргородская
szypulka
szypulka.github.io

More Related Content

ODP
Fuzz testing
PDF
Пример fuzzy testing для поиска URL в тексте
PPTX
50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant
ODP
enterprize yoba jabber bot
PDF
JavaScript Unit Testing Using Jasmine And Tools
PDF
Релизы? Регулярно по пятницам
PDF
BeeGo для веб приложений, API и демонов
PDF
NoCaptcha
Fuzz testing
Пример fuzzy testing для поиска URL в тексте
50 оттенков кеширования: обзор актуальных батареек - Григорий Петров, VoxImplant
enterprize yoba jabber bot
JavaScript Unit Testing Using Jasmine And Tools
Релизы? Регулярно по пятницам
BeeGo для веб приложений, API и демонов
NoCaptcha

What's hot (20)

PDF
Отдаем страницы быстрее или как вписаться в требования Google
PPTX
E-com UI Team workflow
PDF
Бэкенд, фронтенд — всё смешалось (nodkz)
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
PDF
SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...
PDF
Выжмем из Cucumber'a все"
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
PDF
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
PPTX
Нагрузочное тестирование по-живому
PDF
Как перезапустить проблемное приложение и одновременно отладить его
PDF
Стачка 2017: Golang – опыт промышленной разработки
PPTX
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
PPTX
Maven 3 : уличная магия
PPTX
"Великолепный API без Rest", Констатин Якушев (Badoo)
PDF
PPTX
Обзор интернет браузеров
PDF
Владислав Моргун
PPTX
живу в Google Chrome #1
PDF
Отдаем страницы быстрее или как вписаться в требования Google
E-com UI Team workflow
Бэкенд, фронтенд — всё смешалось (nodkz)
Как не положить тысячи серверов с помощью системы централизованного управлени...
SECON'2017, Щеглова Нина, Как мы делаем это: тестирование в ecommerce междуна...
Выжмем из Cucumber'a все"
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Нагрузочное тестирование по-живому
Как перезапустить проблемное приложение и одновременно отладить его
Стачка 2017: Golang – опыт промышленной разработки
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
Maven 3 : уличная магия
"Великолепный API без Rest", Констатин Якушев (Badoo)
Обзор интернет браузеров
Владислав Моргун
живу в Google Chrome #1
Ad

More from it-people (20)

PDF
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
PDF
«Scrapy internals» Александр Сибиряков, Scrapinghub
PDF
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
PDF
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
PDF
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
PDF
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
PDF
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
PDF
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
PDF
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
PDF
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
PDF
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
PDF
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
PDF
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
PDF
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
PDF
«(Без)опасный Python», Иван Цыганов, Positive Technologies
PDF
«Python of Things», Кирилл Борисов, Яндекс
PDF
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
PDF
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
PDF
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
PDF
ЗАВИСИМОСТИ В КОМПОНЕНТНОМ ВЕБЕ, ПРИГОТОВЛЕННЫЕ ПРАВИЛЬНО, Гриненко Владимир,...
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«Python of Things», Кирилл Борисов, Яндекс
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
ЗАВИСИМОСТИ В КОМПОНЕНТНОМ ВЕБЕ, ПРИГОТОВЛЕННЫЕ ПРАВИЛЬНО, Гриненко Владимир,...
Ad

«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со вкусом питона» Надежда Миргородская, Яндекс