Производительность и нагрузка

Основные цели:

  • снижение времени ожидания пользователя;
  • определение критических метрик производительности:
    • время отклика;
    • пропускная способность;
    • масштабируемость.
  • обеспечение гарантированной оптимальной производительности приложения.

Требования к параметрам производительности:

  • допустимое время отклика;
  • пропускная способность и число одновременных пользователей;
  • требования к будущему росту производительности.

Цели

  • сравнить две версии системы (до и после рефакторинга);
  • найти причину проблемы с производительностью;
  • оценить потенциальные возможности системы:
    • сколько пользователей смогут работать с приложением вообще;
    • сколько пользователей сможет работать одновременно:
      • когда закончатся коннекты (пропускная способность сети);
      • когда закончится оперативная память;
      • когда перегрузится процессор.
Профили нагрузки

Профили нагрузки

  1. Непрерывно возрастающая нагрузка (Breakpoint Test).
    Цель - поиск точки насыщения. Каждую секунду увеличивать количество пользователей на 1, пока не будет достигнут один из критериев остановки теста:
    • превышение требуемых значений отклика в несколько раз;
    • достижение критического уровня использования аппаратных ресурсов (ЦП>80%, память>90%);
    • количество ошибок HTTP превышает 1% от общего числа запросов;
    • сбой системного ПО.
  2. Постоянная нагрузка (штатный режим, Load Test) - 20-80% от максимума.
    Цель - подтверждение максимальной производительности. Задается или постоянное кол-во пользователей или постоянное количество транзакций (запросов). Время обработки 90% операций удовлетворяют метрикам производительности. Длительность - 4-8 часов.
  3. Постоянная длительная нагрузка (Endurance Test) - до 80% от максимума.
    Цель - проверка выносливости. Длительность - несколько дней.
  4. Ступенчато возрастающая нагрузка (Stress Test).
    Цель - определение максимальной производительности.
  5. Нагрузка всплесками (Spike Test).
    Цель - проверка отказоустойчивости при внезапном увеличении или уменьшении нагрузки (например, авторизация в начале рабочего дня, после обеда). Отсутствуют ошибки при кратковременном увеличении запросов, время обработки 90% операций удовлетворяют метрикам производительности.
  6. Объемное тестирование.
    Цель - производительность приложения при увеличении объема передаваемых данных.
  7. Проверка масштабируемости.
    Цель - оценить способность решения увеличивать производительность пропорционально добавлению аппаратных ресурсов системы.

Инструменты

Цели

  • объем загружаемых данных (размер HTML файла, скриптов, картинок);
  • количество запросов. Пропускная способность браузера до 6 одновременных запросов. Каждый запрос увеличивает время обработки сервером, т.к. требуется время на установление и закрытие соединения. Решение: объединять запросы в архивы, использовать кеширование браузера, например, для картинок.

Инструменты