Бенчмарк функции не доказывает выигрыш системы. Нагрузочный тест проверяет latency, пропускную способность, ошибки и деградацию зависимостей под реальным профилем.

Модель нагрузки

Закрытая модель задаёт число виртуальных пользователей. Когда сервис замедляется, генератор тоже замедляется и может скрыть предел.

Открытая модель задаёт целевой RPS независимо от времени ответа. Она лучше показывает очередь и фактическую пропускную способность, но требует достаточно мощного генератора.

Проверяем, что генератор не стал узким местом: его CPU, сеть, ошибки и фактический RPS.

Сценарий

Фиксируем:

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

Прогрев не входит в анализ. Полка должна быть достаточно длинной, чтобы увидеть стабильное состояние и накопление очередей.

Метрики

Среднее малоинформативно. Смотрим p50, p95, p99, фактический RPS, долю ошибок, глубину очередей и число горутин.

Если сервис получает 700 RPS, а обрабатывает 450, остальные ждут. Поднимать таймауты, чтобы отчёт стал зелёным, нельзя: это лишь прячет деградацию.

Сравнение до/после

Запускаем один и тот же сценарий на базовой и новой версии. Повторяем несколько раз и сравниваем распределения. Проверяем, что зависимость не изменилась: база, кэш и внешний API должны иметь одинаковую нагрузку и состояние.

Хороший отчёт включает не только улучшение, но и цену: память, CPU, число соединений, ошибки, изменение кода и ограничения результата.

Коротко

  • Открытая модель показывает фактический предел лучше закрытой.
  • Генератор тоже проверяется на узкое место.
  • Хвост и очередь важнее средней задержки.
  • Оптимизацию доказывают повторным сравнением одинакового сценария.