Почему для нагрузочного тестирования используют 20-30% от стандартной нагрузки, а не 50%?
Что проверяют
Выводите ли вы уровень нагрузки из измеренного профиля и требований, или повторяете услышанное число. Проверяют и смелость: цифра в вопросе не является общепринятым правилом, и хороший ответ начинается с уточнения формулировки.
Как отвечать
Сказать прямо: универсального правила «берём 20-30 процентов» нет. Уровень нагрузки задаётся профилем реального трафика и нефункциональными требованиями. Последовательность такая:
- снять продуктив: запросов в секунду в средний час и в пик, распределение по операциям, паузы пользователя между действиями, объём данных;
- зафиксировать критерии приёмки: целевая интенсивность, время ответа по 95 и 99 перцентилю, допустимая доля ошибок, потолки по процессору, памяти, пулу соединений;
- разложить прогоны по видам: дымовой на малой нагрузке проверяет сам сценарий и стенд, нагрузочный держит целевой пик, стрессовый растёт ступенями до отказа и ищет точку деградации, длительный ищет утечки и рост очередей, пиковый проверяет всплеск.
Отсюда и берётся доля от расчётной нагрузки. Малая ступень нужна на разгоне, чтобы прогреть кэши и убедиться, что скрипт корректен. Ограниченная доля нужна, когда тест идёт по живому продуктиву или общему стенду: полную нагрузку туда лить нельзя, чтобы не задеть пользователей, поэтому подают безопасную часть и экстраполируют с поправкой на разницу в железе.
Где спотыкаются
Принимают число из вопроса как данность и придумывают ему обоснование. Получается уверенный ответ ни о чём, а интервьюер как раз ждал, что кандидат спросит, откуда цифра и что считается стандартной нагрузкой.
Отчитываются средним временем ответа. Среднее прячет хвост: при среднем в 200 миллисекунд девяносто девятый перцентиль может стоять в секундах, и именно его чувствуют пользователи. Смотреть надо перцентили и долю ошибок, причём в динамике по ходу прогона.
Не проверяют сам стенд и генератор. Упереться можно в процессор машины с генератором, в сеть, в лимит открытых портов, в один поток скрипта. Без метрик самого генератора и без сравнимого с продуктивом стенда результат нельзя переносить на реальную систему.