Нагрузочное тестирование
Все объяснения, задачи и лабораторная в одном месте.
Можно сохранить страницу в PDF через печать браузера. Для печати разборы ответов раскрываются автоматически.
1. Цели, workload model и success criteria
Объяснение
Нагрузочная модель описывает операции, частоты, данные и длительность. Цель задаётся latency, throughput и ошибками. Нереалистичный повтор одного кешируемого URL завышает результат.
Задача для самостоятельного решения
Что нужно знать перед тестом магазина?
Показать разбор ответа
Доли просмотра, поиска и покупки, размеры данных, число пользователей, pacing и критерии успеха каждого сценария.
2. Open/closed model и test data
Объяснение
Closed model запускает следующую операцию после завершения предыдущей, open model задаёт поток поступления независимо. При замедлении closed model автоматически снижает входную нагрузку.
Задача для самостоятельного решения
Почему closed test может скрыть перегрузку?
Показать разбор ответа
Медленные ответы уменьшают частоту новых запросов. Сравните фактический arrival rate с требуемым потоком пользователей.
3. Load, stress, spike и soak tests
Объяснение
Load проверяет обычную нагрузку, stress — предел, spike — резкий всплеск, soak — длительное поведение. Нагрузочный тест проводят на разрешённой среде с условиями остановки.
Задача для самостоятельного решения
Что может найти soak, но пропустить короткий тест?
Показать разбор ответа
Утечку памяти, накопление очереди, исчерпание соединений и периодические операции. Следите за трендом ресурсов, а не только итоговым средним.
4. Percentiles, throughput и saturation
Объяснение
Percentile показывает задержку, ниже которой лежит доля запросов. Среднее скрывает медленный хвост. Throughput нужно считать вместе с ошибками: быстрые 500 не являются успешной производительностью.
Задача для самостоятельного решения
Из 100 запросов 95 по 10 мс, 5 по 2 с. Хорошо ли среднее описывает UX?
Показать разбор ответа
Среднее около 109,5 мс, но часть людей ждёт 2 с. Показывайте распределение и хвостовые процентили с достаточным объёмом выборки.
5. Server/client telemetry и correlation
Объяснение
Генератор нагрузки сам может стать узким местом. Корреляция CPU, очереди, I/O и latency помогает локализовать ограничение. Метки времени должны быть сопоставимы.
Задача для самостоятельного решения
Как отличить перегрузку клиента от сервера?
Показать разбор ответа
Проверить ресурсы генератора, фактическую скорость отправки и серверный throughput. Если клиент не создаёт нужный поток, предел сервера ещё не измерен.
6. Capacity conclusion и безопасный повтор
Объяснение
Capacity выводится для определённой конфигурации и модели. После теста проверяют восстановление очередей и ресурсов. Экстраполяция на другую нагрузку требует нового обоснования.
Задача для самостоятельного решения
Можно ли обещать 1000 пользователей по результату 1000 запросов/с?
Показать разбор ответа
Нет без модели активности пользователя. Один пользователь может делать один запрос в минуту или десятки в секунду.
Лабораторная работа
Подготовка
Синтетические длительности, Python 3; нагрузка на внешний сервис не создаётся.
Учебный пример
from statistics import mean
latencies=sorted([10]*95+[2000]*5)
print(mean(latencies))
print(latencies[98])Как работает пример и что ожидать
Среднее 109,5 мс, элемент с индексом 98 равен 2000 мс и иллюстрирует медленный хвост. Формальное вычисление percentile имеет разные соглашения; фиксируйте используемое правило и объём выборки.
Итоговая работа
Создайте модель нагрузки собственного локального сервиса с лимитом и stop condition. Измеряйте успешный throughput, ошибки, хвост latency и ресурсы генератора. Проведите load и soak, затем проверьте восстановление очереди.
Проверка результата
1. Опишите исходные данные и условия запуска, чтобы другой человек мог повторить работу.
2. Приложите результат обычного сценария и сравните его с ожидаемым.
3. Проверьте неверный вход, граничный случай и отказ зависимости, если она есть.
4. Объясните выбранное решение и известное ограничение.
5. Сохраните исправления после самопроверки вместе с примером, который раньше не работал.
Как оценить работу
По каждому пункту поставьте 0 (не выполнено), 1 (выполнено с пробелами) или 2 (результат воспроизводим и объяснён). Если обязательный сценарий не работает, вернитесь к нему независимо от общей суммы. Это рубрика самопроверки: сайт не исполняет присланный код и не выдаёт автоматическую оценку проекта.