1. Введение в метрики производительности: основные понятия и цели измерений
Введение в метрики производительности: основные понятия и цели измерений
Добро пожаловать на курс «Метрики тестирования производительности». Представьте, что вы управляете гоночным болидом, но у вас завязаны глаза, а приборная панель отключена. Вы не знаете, с какой скоростью едете, сколько осталось топлива и не перегрелся ли двигатель. Риск аварии в такой ситуации стремится к ста процентам.
Разработка и эксплуатация программного обеспечения без метрик производительности выглядит именно так. В этой вводной статье мы разберем фундамент, на котором будет строиться весь наш курс: что такое метрики, зачем они нужны и какие ключевые показатели определяют «здоровье» вашей системы.
Что такое тестирование производительности?
Прежде чем говорить о метриках, давайте синхронизируем понимание самого процесса. Тестирование производительности — это вид нефункционального тестирования, цель которого — определить, как быстро, стабильно и масштабируемо работает система под определенной нагрузкой.
Мы не ищем функциональные баги (например, «кнопка не работает»), мы ищем «узкие места» (bottlenecks), которые замедляют работу приложения или приводят к его падению при наплыве пользователей.
Зачем нам нужны метрики?
Метрика — это количественная мера степени, в которой система, компонент или процесс обладают данным атрибутом. В контексте производительности метрики отвечают на вопросы «Как быстро?» и «Сколько?».
Основные цели сбора метрик:
Три кита производительности
В мире нагрузочного тестирования существует три фундаментальные категории метрик, которые взаимосвязаны между собой. Давайте разберем их подробно.
1. Время отклика (Response Time / Latency)
Это время, которое проходит с момента отправки запроса пользователем до момента получения последнего байта ответа. Это самая понятная для бизнеса метрика, так как она напрямую влияет на опыт пользователя.
Важно понимать, что время отклика складывается из нескольких этапов: * Время отправки запроса по сети. * Время обработки запроса на сервере (Server Processing Time). * Время работы базы данных. * Время получения ответа по сети.
> «Быстродействие — это не фича, это требование».
2. Пропускная способность (Throughput)
Эта метрика показывает, какой объем работы система может выполнить за единицу времени. Обычно она измеряется в: * RPS (Requests Per Second) — количество запросов в секунду. * TPS (Transactions Per Second) — количество бизнес-транзакций в секунду (транзакция может состоять из нескольких запросов).
Представьте кассу в супермаркете. Время, которое кассир тратит на одного покупателя — это время отклика. Количество покупателей, которых кассир обслуживает за час — это пропускная способность.
3. Утилизация ресурсов (Resource Utilization)
Это метрики «здоровья» серверов. Они показывают, сколько ресурсов потребляет система под нагрузкой. Основные показатели: * CPU Usage: Загрузка процессора. * Memory Usage: Потребление оперативной памяти. * Disk I/O: Операции ввода-вывода на жестком диске. * Network I/O: Загрузка сетевого канала.
Если утилизация одного из ресурсов приближается к 100%, это становится «бутылочным горлышком», ограничивающим пропускную способность и увеличивающим время отклика.
Математическая связь метрик: Закон Литтла
В теории массового обслуживания существует фундаментальная теорема, связывающая количество пользователей, время отклика и пропускную способность. Она называется Закон Литтла. Понимание этого закона отличает профессионала от новичка.
Формула выглядит следующим образом:
Где: * — среднее количество запросов, находящихся в системе одновременно (или количество одновременных пользователей, Concurrency). * — пропускная способность системы (Throughput), то есть скорость поступления и обработки заявок. * — среднее время пребывания запроса в системе (Response Time).
Пример использования: Допустим, вы знаете, что ваша система должна выдерживать 100 одновременных пользователей (), и вы хотите, чтобы среднее время отклика было не более 0,5 секунды (). Какую пропускную способность должен обеспечивать ваш сервер?
Используя формулу, мы можем выразить :
Где: * — искомая пропускная способность. * — количество пользователей (числитель). * — время отклика (знаменатель).
Подставим значения:
Где: * — это требуемое количество запросов в секунду (RPS).
Это означает, что для обеспечения заданных условий ваш сервер обязан обрабатывать 200 запросов в секунду. Если он не сможет этого сделать, то либо вырастет время отклика (), либо система начнет отбрасывать запросы.
Уровень ошибок (Error Rate)
Нельзя говорить о производительности, игнорируя ошибки. Если система отвечает мгновенно, но возвращает ошибку «500 Internal Server Error», это не высокая производительность, а отказ обслуживания.
Error Rate — это процент запросов, завершившихся ошибкой, по отношению к общему числу запросов. Обычно вычисляется по формуле:
Где: * — уровень ошибок в процентах. * — количество ошибочных запросов. * — общее количество отправленных запросов.
В хорошем тесте производительности уровень ошибок должен быть равен нулю или не превышать допустимый порог (например, 0.01%), оговоренный в требованиях.
Клиентские и серверные метрики
Важно различать, где мы измеряем показатели.
В этом курсе мы будем фокусироваться преимущественно на серверной производительности, так как она является фундаментом для всего остального, но помнить о клиенте нужно всегда.
Резюме
Сегодня мы заложили первый камень в фундамент ваших знаний о нагрузочном тестировании. Мы выяснили, что: * Тестирование производительности ищет узкие места, а не функциональные баги. * Основные метрики — это Время отклика, Пропускная способность и Утилизация ресурсов. * Закон Литтла связывает нагрузку, скорость и время отклика математически. * Ошибки — это тоже часть метрик производительности.
В следующей статье мы углубимся в Время отклика и узнаем, почему «среднее время» — это ложь, и зачем нам нужны перцентили.