Similar presentations:
Исследование параметров нагрузки в Locust
1. ПРАКТИЧЕСКАЯ РАБОТА №6
Исследование параметров нагрузки в Locust2. Flask-сервер
Что делает этот код простыми словами:• создаёт веб-сервер
• когда мы открываем /, он возвращает текст "Hello, World!"
• работает на порту 5000
3. Locust
Locust - это программа, которая:• создаёт виртуальных пользователей
• каждый пользователь отправляет HTTP-запросы
• мы смотрим, как сервер справляется с нагрузкой
4. Разберём каждую часть
HttpUser• Это виртуальный пользователь.
• Каждый созданный user — это копия этого класса.
• Если указали 10 users → будет 10 таких «виртуальных людей».
5. Декоратор
@task• Это пометка: «Эту функцию нужно выполнять во время теста».
• Если убрать @task — Locust не будет выполнять функцию.
6.
self.client.get("/")• Это HTTP-запрос к серверу.
• Аналогично тому, как браузер открывает страницу.
7.
wait_time• Это пауза между действиями пользователя.
• Без неё пользователь будет отправлять запросы без остановки.
between(1, 3)
• Пауза от 1 до 3 секунд (случайное число).
• Имитация реального человека.
constant(2)
• Пауза всегда 2 секунды.
8.
Users• Сколько виртуальных пользователей.
Spawn rate
• Скорость появления пользователей.
• Users = 50
• Spawn rate = 10
• Каждую секунду будет добавляться 10 пользователей.
9. Часть 1. Отправная точка
wait_time = between(1, 3)Тест:
• 10 users
• spawn rate 2
• 1 минута
Записать:
• RPS
• Average response
• Failures
Это будет наша базовая точка сравнения.
10. Часть 2. Wait time
Эксперимент 1 — очень маленькая паузаЭксперимент 3 — constant
• wait_time = between(0, 0.1)
• from locust import constant
• wait_time = constant(1)
Эксперимент 2 — без паузы
Сравнить с between(1,3)
• wait_time = between(0, 0)
Эксперимент 4 — constant_pacing
• from locust import constant_pacing
• wait_time = constant_pacing(2)
Что изменилось?
11. Таблица оформления
wait_timeRPS
AVG response
Что изменилось (+
скриншот)
Какой тип ожидания создаёт самую
сильную нагрузку? Почему?
12. Часть 3. Убираем wait_time
wait_time = ...• Запустить.
• Что произошло?
• Почему нагрузка изменилась?
13. Часть 4. Количество пользователей
• wait_time = between(1, 2)Users
RPS
AVG
5
20
50
100
• Почему RPS перестаёт расти бесконечно
Failures
14. Часть 5. Частота появления пользователей
Частота появления пользователей (spawn rate)Что изменилось
Почему быстрый старт нагрузки опаснее
плавного?
15. Часть 6. Вторая задача
Проверить в StatisticsПоменять на:
• @task(10)
• @task(1)
Что изменилось?
16. Часть 7. Ломаем код
Попробовать:• Убрать @task
• Убрать self
• Указать неправильный порт
• Указать неправильный URL
Записать:
• какую ошибку получили
• где она отображается
• как её понять
17. Часть 8. Добавить on_start
Запустить 20 users.• Сколько раз выведется сообщение?
• Почему?
18. Отчёт
• Таблицы экспериментов• Скриншоты тестов
• Ответы на вопросы
• Краткий вывод (5–10 предложений)
programming