Бенчмарк функции не доказывает выигрыш системы. Нагрузочный тест проверяет latency, пропускную способность, ошибки и деградацию зависимостей под реальным профилем.
Модель нагрузки
Закрытая модель задаёт число виртуальных пользователей. Когда сервис замедляется, генератор тоже замедляется и может скрыть предел.
Открытая модель задаёт целевой RPS независимо от времени ответа. Она лучше показывает очередь и фактическую пропускную способность, но требует достаточно мощного генератора.
Проверяем, что генератор не стал узким местом: его CPU, сеть, ошибки и фактический RPS.
Сценарий
Фиксируем:
- состав запросов и данных;
- прогрев кэшей;
- набор нагрузки, полку и спуск;
- количество экземпляров;
- зависимости и их состояние;
- допустимые ошибки и таймауты.
Прогрев не входит в анализ. Полка должна быть достаточно длинной, чтобы увидеть стабильное состояние и накопление очередей.
Метрики
Среднее малоинформативно. Смотрим p50, p95, p99, фактический RPS, долю ошибок, глубину очередей и число горутин.
Если сервис получает 700 RPS, а обрабатывает 450, остальные ждут. Поднимать таймауты, чтобы отчёт стал зелёным, нельзя: это лишь прячет деградацию.
Сравнение до/после
Запускаем один и тот же сценарий на базовой и новой версии. Повторяем несколько раз и сравниваем распределения. Проверяем, что зависимость не изменилась: база, кэш и внешний API должны иметь одинаковую нагрузку и состояние.
Хороший отчёт включает не только улучшение, но и цену: память, CPU, число соединений, ошибки, изменение кода и ограничения результата.
Коротко
- Открытая модель показывает фактический предел лучше закрытой.
- Генератор тоже проверяется на узкое место.
- Хвост и очередь важнее средней задержки.
- Оптимизацию доказывают повторным сравнением одинакового сценария.