Ответ
В нагрузочном тестировании мы отслеживаем несколько групп метрик, чтобы оценить производительность, стабильность и потребление ресурсов системы.
1. Метрики производительности (Performance)
- Время отклика (Response Time): Среднее, перцентили (p95, p99), максимальное время ответа системы.
- Пропускная способность (Throughput): Количество успешно обработанных запросов в секунду (RPS — Requests Per Second) или транзакций в секунду (TPS).
- Задержка (Latency): Время, затраченное исключительно на обработку запроса, без учёта сетевых задержек.
2. Метрики надёжности (Reliability)
- Процент ошибок (Error Rate): Доля запросов, завершившихся с HTTP-кодами 5xx, 4xx или таймаутами.
- Доступность (Availability): Процент времени, когда система корректно отвечает на запросы в течение теста.
3. Метрики использования ресурсов (Resource Utilization)
- Использование ЦП (CPU Usage): Загрузка процессора на серверах приложения, БД.
- Использование памяти (Memory Usage): Потребление оперативной памяти (RAM).
- Ввод-вывод диска и сети (Disk/Network I/O): Активность чтения/записи и сетевого обмена.
4. Метрики масштабируемости (Scalability)
- Точка деградации (Breaking Point): Нагрузка, при которой время отклика начинает расти экспоненциально или резко растёт процент ошибок.
- Эффективность масштабирования: Как изменяется производительность при добавлении ресурсов (например, нод в кластере).
Пример отчёта (на основе вывода JMeter или Gatling):
Общее количество запросов: 10,000
Среднее время отклика: 245 мс
95-й перцентиль (p95): 520 мс
Максимальное время отклика: 1,850 мс
Пропускная способность: 412.3 запр./сек
Процент ошибок: 0.15% Ответ 18+ 🔞
А, вот ты про нагрузку спрашиваешь! Ну, слушай, это ж как в спортзале: пока не начнёшь штангу ебашить — не поймёшь, где у тебя связки хрустят. Так и с системой. Чтобы не было потом "ой, всё упало", надо за ней, за сукой, следить по нескольким фронтам. Не просто ткнуть и побежать, а с умом.
1. Метрики производительности (Performance) — "Быстро ли она шевелит булками?"
- Время отклика (Response Time): Это самое главное. Не просто среднюю температуру по больнице смотреть, а вот эти перцентили — p95, p99. Потому что если для 95% пользователей всё летает, а для оставшихся 5% — пиздец как тормозит, то эти 5% тебе такой срач в ревью накидают, мало не покажется. И максимальное время — тоже, чтобы понять, в какой момент она совсем охренела.
- Пропускная способность (Throughput): Сколько запросов в секунду она может проглотить, не подавившись. RPS/TPS. Если этот показатель на графике похож на мёртвую крысу — плохо.
- Задержка (Latency): Чистое время обработки, без учёта того, как долго запрос по сети ползёт. Чтобы понять, тормозит само ядро или просто сеть — говно.
2. Метрики надёжности (Reliability) — "Или она просто сдохнет?"
- Процент ошибок (Error Rate): Сколько запросов кончились не "ОК", а каким-нибудь позорным "500 Internal Server Error" или "408 Timeout". Даже 0.5% — это уже повод задуматься, что там у неё внутри болит.
- Доступность (Availability): По сути, обратная величина к ошибкам. Сколько процентов времени она хоть что-то, да отвечала. Если ниже 99.9% — это уже не система, а мартышлюшка какая-то.
3. Метрики использования ресурсов (Resource Utilization) — "Во что ей наши потроха обходятся?"
- Использование ЦП (CPU Usage): Если процессор на сервере пыхтит на 98%, как паровоз перед инфарктом — это явный знак, что пора либо оптимизировать код, либо добавлять железа. Иначе он просто вскипит и накроется медным тазом.
- Использование памяти (Memory Usage): Чтобы память не кончилась раньше, чем тест. Утечки памяти — это тихий, ебаный убийца.
- Ввод-вывод диска и сети (Disk/Network I/O): Диск не должен скрипеть, как немазаная телега, а сетевая карта — не должна быть забита под завязку. Иначе всё упрётся в них, а не в логику.
4. Метрики масштабируемости (Scalability) — "А если народу придёт овердохуища?"
- Точка деградации (Breaking Point): Самый интересный момент! Та нагрузка, после которой график времени отклика перестаёт быть прямой линией и резко уходит вверх, как хуй с горы. Вот эту точку и ищем — чтобы знать, на какой мощности она начинает пиздец как тупить.
- Эффективность масштабирования: Добавили ещё два сервера — пропускная способность выросла в два раза? Отлично. Выросла всего на 20%? Значит, архитектура — говно, и бутылочное горлышко где-то в другом месте (чаще всего — база данных).
Пример отчёта (на основе вывода JMeter или Gatling): Вот, смотри, как это выглядит в жизни. Не просто цифры, а история:
Общее количество запросов: 10,000
Среднее время отклика: 245 мс (вроде норм, да?)
95-й перцентиль (p95): 520 мс (ого, а это уже не очень)
Максимальное время отклика: 1,850 мс (ёпта, а это кто и когда так ждал?!)
Пропускная способность: 412.3 запр./сек
Процент ошибок: 0.15% (ну, ладно, сойдёт, но копнуть надо)
Видишь? Средняя — 245 мс, а каждый двадцатый запрос (p95) — уже полсекунды. А кому-то и вовсе почти две секунды прилетело! Вот на эти выбросы и надо смотреть в первую очередь, ебать их в сраку. Потому что пользователь, который попал в эти 5% или в тот один запрос на 1.8 секунды, уже пишет гневный пост в твиттер. Вот и вся нагрузочная магия.