Я новичок в инструменте JMeter. Может ли кто-нибудь помочь мне лучше всего проанализировать отчеты JMeter?
Ответ 2
Есть 3 теста, которые должны выполняться при тестировании производительности, всегда должны быть базовый уровень, пиковый тест и стресс-тест. Эти испытания связаны друг с другом из-за небольшого закона. Долгосрочное среднее число клиентов в стабильной системе L равно долгосрочному среднему эффективному коэффициенту прибытия λ, умноженному на время, которое клиент проводит в системе, Вт; или выражается алгебраически: L = λW. ,
![enter image description here]()
Jmeter уже предоставляет средства для проверки этих значений, стандартный плагин предоставляет графики для времени отклика, попаданий, а также пропускной способности. Невозможно напрямую определить, сколько пользователей было активным в системе, это не то же самое количество одновременных пользователей, что и активных пользователей. Плагинов достаточно для создания отчетов, но они не позволяют контролировать большую часть презентации, я буду использовать некоторые графики, созданные с использованием Python (они добавляют метки и имеют ось 2 y).
Базовый тест: этот случай является частным случаем закона, в этом случае активные пользователи являются постоянными, и это один, а затем:
![enter image description here]()
Если приложение запускает один и тот же фрагмент кода, время отклика со временем стабилизируется, тогда скорость поступления также будет постоянной со временем.
Есть сервис, который ничего не делает, кроме как подождать некоторое время, чтобы пройти:
![enter image description here]()
2 секунды обслуживания: скорость прибытия была 1/2TPS.
![enter image description here]()
3 секунды обслуживания: скорость прибытия была 1/3TPS.
![enter image description here]()
Пиковый тест: это не частный случай, в данном случае нагрузка увеличивается до тех пор, пока она не превысит производительность системы, поскольку нагрузка превышает пропускную способность, время отклика увеличивается. Во время теста число потоков должно увеличиваться достаточно быстро, чтобы восстановиться после длительного времени отклика.
![enter image description here]()
На этот раз вместо того, чтобы работать на пике, я буду нагружать систему большей нагрузкой, чем она способна выдержать в течение всего теста. Чтобы контролировать пропускную способность сервиса:
![enter image description here]()
Активные транзакции - это те, которые покинули инжектор, но не получили ответа, это транзакции, которые находятся в очереди в некотором месте в системе.
- λ (t) = c, T (t) = k; как нагрузка, так и пропускная способность постоянны во времени.
- L = Σλ - ΣT = ct - kt; Активные транзакции - это разница между совокупной нагрузкой и совокупной пропускной способностью.
- L = (c - k) t
- λW = (c - k) t
- CW (t) = (c - k) t
- W (t) = t (c - k)/c
Поскольку время отклика растет, как и у активных пользователей, нам понадобится инжектор для создания новых потоков, так как быстро требуются новые соединения, большинство потоков пула будут заняты.
Скорость поступления 2TPS, пропускная способность 1 TPS:
- Функция времени отклика составляет 1/2т
- Инжектор нагнетает систему в течение 300 секунд.
- Тест длился 600 секунд.
![enter image description here]()
Скорость поступления 4TPS, пропускная способность 1 TPS:
- Функция времени отклика 3/4t
- Инжектор нагнетает систему в течение 300 секунд.
- Тест длился 1200 секунд.
![enter image description here]()
Скорость поступления 6TPS, пропускная способность 5 TPS:
- Функция времени отклика составляет 1/6 т
- Инжектор нагнетает систему в течение 300 секунд.
- Тест длился 360 секунд.
![enter image description here]()
Ответ 5
В дополнение ко всем остальным ответам: есть хороший сайт BlazeMeter, где вы можете загрузить свой файл результатов теста (.jtl), и он будет генерировать для него все виды (интерактивных) отчетов. Он даже анализирует его для вас и указывает, когда возникает первая ошибка, что такое точка насыщения и т.д. Https://sense.blazemeter.com/gui/
Если у вас есть инфраструктура графита/графана, я могу рекомендовать добавить Backend Listener в проект. Он будет отправлять метрики в режиме реального времени на графитовый сервер, и вы можете контролировать тест в графите (или графане).