JMeter отправляет меньше запросов, чем ожидалось - PullRequest
0 голосов
/ 30 октября 2019

Я использую jmeter для генерации теста производительности, чтобы быть кратким и понятным, я читаю исходные данные из файла json, у меня есть одна группа потоков, в которой после чтения данных я рандомизирую определенные значения, чтобы предотвратить дублирование данныхкогда мне это нужно, тогда я передаю окончательные данные в конечную точку, используя переменные, в результате получается тело json, которое получает конечная точка, и в основном генерирует новую транзакцию в базе данных. Также я добавил постоянный таймер, чтобы добавить 7 секундную задержку между запросами, с тестовой продолжительностью 10 минут и без увеличения скорости, я рассчитал количество запросов в секунду следующим образом:

1 минута имеет 60 секунд, и у меня естьзадержка 7 секунд на запрос, тогда логично сказать, что каждую минуту я посылаю примерно 8,5 запросов в минуту, это мой расчет (60/7) = 8,5 теперь, если тест длится 10 минут, то я умножаю (8,5 *10) = 85, что дает мне в общей сложности 85 транзакций за 10 минут, поэтому я смогу увидеть точно такое же количество транзакций, созданных в базе данных после завершения теста.

Это верно, когда яработает 10-20-40 пользователей, после запуска нагрузочного теста я запрашиваю базу данных и получаю точно такое же количество транзакций, однако, по мере увеличения количества пользователей в группе потоков, это больше не происходит, например, если я установил 1000пользователи, я должен быть в состоянии генерировать 8500 транзакций за 10 минут, но это не так, БД создает только около 5,1 тыс. трансдействия.

Что происходит, что не так? Почему изначально он работает так, как ожидалось, а по мере увеличения количества пользователей - нет? Я могу предоставить больше информации, если это необходимо. Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 30 октября 2019

Это также будет верно (8,5 тыс. Запросов за 10 минут продолжительности теста), если ваше время отклика API составляет 1 секунду, а также вы предоставили достаточно времени нарастания для этих 1000 пользователей.

Возможная причинаis:

  • Вы не указали достаточно времени нарастания для 1000 пользователей.
  • Среднее время ответа API составляет более 1 секунды при выполнении тестов для 1000 пользователей.

Возможные обходные пути:

  • Сначала попробуйте измерить время ответа API для 1 пользователя.
  • Затем рассчитайте соответственното, сколько пользователей вам нужно, чтобы достичь 8500 запросов за 10 минут. Используйте следующую формулу:

    TPS * максимальное время отклика в секундах

  • Дайте правильное время разгона для 1000 пользователей. Проверьте этот поток , чтобы понять, как следует рассчитывать время разгона.

  • Убедитесь, что ваш генератор нагрузки способен генерировать 1000 пользователей без какой-либо памяти или работоспособности (то есть использования ЦП)вопросы. Если требуется, попробуйте использовать распределенную архитектуру.
0 голосов
/ 30 октября 2019

Для этого может быть две возможные причины:

  1. Вы обнаружили ваше приложение Узкое место . Когда вы добавляете больше пользователей, время отклика приложения увеличивается, поэтому пропускная способность уменьшается. Существует термин, называемый точка насыщения , который обозначает максимальную производительность системы, если вы выйдете за пределы этой точки - система будет реагировать медленнее, и вы получите меньше TPS, чем первоначально. Со стороны тестируемого приложения вы должны взглянуть на следующие области:

    • Возможно, в вашем приложении просто не хватает ресурсов (ЦП, ОЗУ, сеть и т. Д.), Убедитесь, что оноимеет достаточный запас для работы, например, JMeter PerfMon Plugin
    • Промежуточное программное обеспечение вашего приложения (сервер приложений, база данных, балансировщик нагрузки и т. д.) не настроено должным образом для высоких нагрузок. Определите свой стек инфраструктуры приложений и обязательно следуйте рекомендациям по настройке производительности для каждого компонента
    • Также возможно, что код вашего приложения нуждается в оптимизации, вы можете обнаружить наиболее затратные по времени / ресурсу функции,самые большие объекты, самые медленные запросы к БД, время простоя и т. д. с использованием инструментов профилирования
  2. JMeter не отправляет запросы достаточно быстро

0 голосов
/ 30 октября 2019

Можете ли вы проверить один раз загрузку ЦП и памяти (использование ОЗУ и кучу Java) генератора нагрузки jmeter во время работы jemter для 1000 пользователей? Если оно выше или достигает максимума, это может повлиять на количество запросов / сек. Также, просто для подтверждения запросов в секунду со стороны Jmeter, не могли бы вы добавить прослушиватель в сценарии Jmeter для отслеживания Hit / sec или TPS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...