Производительность и нагрузка
Основные цели:
- снижение времени ожидания пользователя;
- определение критических метрик производительности:
- время отклика;
- пропускная способность;
- масштабируемость.
- обеспечение гарантированной оптимальной производительности приложения.
Требования к параметрам производительности:
- допустимое время отклика;
- пропускная способность и число одновременных пользователей;
- требования к будущему росту производительности.
Цели
- сравнить две версии системы (до и после рефакторинга);
- найти причину проблемы с производительностью;
-
оценить потенциальные возможности системы:
- сколько пользователей смогут работать с приложением вообще;
-
сколько пользователей сможет работать
одновременно:
- когда закончатся коннекты (пропускная способность сети);
- когда закончится оперативная память;
- когда перегрузится процессор.
Профили нагрузки
-
Непрерывно возрастающая нагрузка (Breakpoint
Test).
Цель - поиск точки насыщения. Каждую секунду увеличивать количество пользователей на 1, пока не будет достигнут один из критериев остановки теста:- превышение требуемых значений отклика в несколько раз;
- достижение критического уровня использования аппаратных ресурсов (ЦП>80%, память>90%);
- количество ошибок HTTP превышает 1% от общего числа запросов;
- сбой системного ПО.
-
Постоянная нагрузка (штатный режим, Load
Test) - 20-80% от максимума.
Цель - подтверждение максимальной производительности. Задается или постоянное кол-во пользователей или постоянное количество транзакций (запросов). Время обработки 90% операций удовлетворяют метрикам производительности. Длительность - 4-8 часов. -
Постоянная длительная нагрузка (Endurance
Test) - до 80% от максимума.
Цель - проверка выносливости. Длительность - несколько дней. -
Ступенчато возрастающая нагрузка (Stress
Test).
Цель - определение максимальной производительности. -
Нагрузка всплесками (Spike Test).
Цель - проверка отказоустойчивости при внезапном увеличении или уменьшении нагрузки (например, авторизация в начале рабочего дня, после обеда). Отсутствуют ошибки при кратковременном увеличении запросов, время обработки 90% операций удовлетворяют метрикам производительности. -
Объемное тестирование.
Цель - производительность приложения при увеличении объема передаваемых данных. -
Проверка масштабируемости.
Цель - оценить способность решения увеличивать производительность пропорционально добавлению аппаратных ресурсов системы.
Инструменты
Цели
- объем загружаемых данных (размер HTML файла, скриптов, картинок);
- количество запросов. Пропускная способность браузера до 6 одновременных запросов. Каждый запрос увеличивает время обработки сервером, т.к. требуется время на установление и закрытие соединения. Решение: объединять запросы в архивы, использовать кеширование браузера, например, для картинок.
Инструменты
- https://gtmetrix.com/
- https://www.webpagetest.org/
- https://pagespeed.web.dev/
- Chrome DevTools (F12) — Lighthouse (Audits)
- pageAuditor, curlLoad