ПРАКТИЧЕСКАЯ РАБОТА №6
Flask-сервер
Locust
Разберём каждую часть
Декоратор
Часть 1. Отправная точка
Часть 2. Wait time
Таблица оформления
Часть 3. Убираем wait_time
Часть 4. Количество пользователей
Часть 5. Частота появления пользователей
Часть 6. Вторая задача
Часть 7. Ломаем код
Часть 8. Добавить on_start
Отчёт
114.30K
Category: programmingprogramming

Исследование параметров нагрузки в Locust

1. ПРАКТИЧЕСКАЯ РАБОТА №6

Исследование параметров нагрузки в Locust

2. 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_time
RPS
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 предложений)
English     Русский Rules