ТестированиеНагрузочное тестированиеИнженер по нагрузочному тестированию

Допустим, за час теста общий p95 укладывается в SLA, но отдельные пятиминутные окна его нарушают. Какой выв...

Допустим, за час теста общий p95 укладывается в SLA, но отдельные пятиминутные окна его нарушают. Какой вывод о производительности следует сделать?

Проходите собеседования с ИИ помощником Hintsage

Краткий ответ

Общий p95 скрывает временные нарушения SLA, поэтому сервис нельзя считать стабильно соответствующим требованиям. Нужно анализировать метрики по временным окнам и определить длительность, частоту и причины эпизодов деградации.

Исторический контекст

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

Их исходная задача — не допустить, чтобы кратковременные перегрузки растворялись в статистике всего теста. Для эксплуатационных требований важна не только общая выборка, но и то, как сервис ведёт себя в каждом значимом интервале.

Постановка проблемы

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

Такой отчёт создаёт ложное ощущение стабильности. Пользователи или отдельные бизнес-операции могут регулярно попадать в плохие интервалы, хотя итоговая цифра формально соответствует SLA.

Подробное решение

Нужно рассчитывать p95, p99, долю ошибок и пропускную способность по последовательным временным окнам, например по одной или пяти минутам. Размер окна выбирают с учётом SLA, длительности типичного инцидента и объёма запросов: слишком короткое окно даёт шумные оценки, слишком длинное снова скрывает кратковременные пики.

Общий p95 и оконные p95 отвечают на разные вопросы. Первый показывает распределение задержек за весь период, а вторые — устойчивость поведения во времени. Для вывода о соблюдении SLA следует проверять правило, заданное требованиями: например, допустимую задержку в каждом окне или долю окон с нарушением.

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

Важно учитывать статистическую устойчивость. В окне с малым числом запросов p95 может сильно колебаться, поэтому полезно дополнительно показывать объём выборки и доверительные интервалы либо объединять окна только при наличии обоснования. Нельзя заменять оконные перцентили средним значением p95 по окнам: перцентили не являются линейными величинами.

Ситуация из практики

Интернет-магазин тестировали в течение часа. Общий p95 составил 420 мс при SLA 500 мс, но в четырёх пятиминутных окнах p95 превышал 900 мс. Эти окна совпадали с запуском фоновой задачи, которая интенсивно обращалась к той же базе данных.

Рассматривались два варианта. Увеличение числа экземпляров приложения могло бы помочь при нехватке CPU, но не устраняло бы конкуренцию за базу данных. Перенос фоновой задачи на отдельное окно уменьшал бы пересечение нагрузок, однако мог ухудшить свежесть обрабатываемых данных.

Выбрали ограничение ресурсоёмкости фоновой задачи и её запуск в периоды меньшей пользовательской нагрузки. После повторного теста нарушения исчезли во всех временных окнах, а не только в общей статистике. Это подтвердило, что проблема была периодической конкуренцией за зависимость, а не средним дефицитом мощности приложения.

Что кандидаты часто упускают

  1. Дополнительный вопрос: Можно ли считать сервис соответствующим SLA, если нарушение p95 произошло только в одном временном окне?

Ответ: Это зависит от формулировки SLA. Если требование относится ко всему периоду или допускает определённую долю нарушений, нужно проверить соответствующее правило. Нельзя автоматически считать единичное нарушение несущественным: следует учитывать длительность окна, число затронутых запросов, бизнес-критичность операции и допустимый бюджет нарушений.

  1. Дополнительный вопрос: Почему среднее значение p95 по временным окнам не равно p95 по всему тесту?

Ответ: Каждый оконный p95 вычисляется относительно своей локальной выборки, а затем сами перцентили усредняются. При этом окна могут содержать разное число запросов и различаться по распределению задержек. Для общего p95 нужны исходные наблюдения или корректное объединение гистограмм, а не среднее локальных перцентилей.

  1. Дополнительный вопрос: Как отличить реальный кратковременный всплеск задержки от статистического шума в малом окне?

Ответ: Нужно проверить размер выборки, повторяемость всплеска в нескольких прогонах и согласованность с другими сигналами: ошибками, очередями, нагрузкой и метриками зависимостей. Полезно сравнивать p95 с p99 и абсолютным числом медленных запросов. Если окно содержит мало наблюдений и не подтверждается повторными измерениями, вывод о регрессии делать преждевременно.