Jmeter несколько одновременных пользователей в одной группе потоков - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть 1 thread group, и я определил 100 threads и 1 Iteration с single HttpSampler.В основном я тестирую один GET API.

enter image description here

enter image description here

Теперь Jmeter должен запуститься100 потоков, а затем они должны запустить запрос на мой сервер, который имеет API.Сервер может отвечать на 100 запросов одновременно.Итак, в принципе, в любой момент времени у меня должно быть 100 параллелизмов.

Но это не то, что происходит, когда я проверяю через Blazemeter.Я получаю максимальное число пользователей 37, а общее число пользователей - 100, что означает, что максимальное число одновременных пользователей во время теста составило 37.

Это может быть возможно только в том случае, если Jmeter не выполнял параллельные потоки.Так где я не прав?

Я хочу, чтобы все потоки выполнялись параллельно после того, как все они созданы, и запускали запросы одновременно, чтобы максимальный параллелизм составлял 100 для 1 итерации.

Ответы [ 4 ]

2 голосов
/ 23 сентября 2019

Если вам нужно больше контроля и точности, используйте Конечная группа потоков Плагин JMeter (вместо обычной группы потоков)

Установите начальный счетчик потоков равным 100, с 0 начальной задержкой и 0 временем запускас положительным временем удержания ваш поток будет содержать до 100 пользователей максимум

Общий пример:

Если ваш компьютер не может справиться с генерацией нагрузки, вам может потребоватьсянастройка распределенного тестирования

0 голосов
/ 24 сентября 2019

Не рекомендуется использовать период разгона как 0.

Я думаю, что вы путаете между параллелизмом (связанным с виртуальными пользователями) и одновременным (связанным с запросами или сэмплерами).

Чтобы одновременно выполнять запросы, используйте Синхронизирующий таймер как дочерний элемент ваших запросов.Это приостановит X количество потоков и затем освободится сразу.А до этого, чтобы поддерживать параллелизм на 100 пользователей, попробуйте соответственно использовать время разгона (то есть 10 секунд).Таким образом, это займет 10 секунд для 100 пользователей, живущих на сервере, а затем одновременно выполнит запросы для 100 пользователей.

Неважно, какую группу потоков вы используете, но если вы поддерживаете параллелизм в течение большего периода времени (удерживаете этот параллелизм), тогда используйте Ultimate Thread Group или вы можете соответственно использовать счетчик циклов.

Если вы хотите выполнить пиковое тестирование, тогда обычная группа Thread подойдет.Но вы должны помнить, что некоторые из ваших потоков могут уже завершить свою работу и были закрыты, поэтому вы не увидите ожидаемое число одновременных пользователей.

Вот примеры снимков экрана в течение 1 минуты. Продолжительность теста(Время разгона 100 пользователей 30 с + время удержания нагрузки 20 с + 10 с для времени простоя)

Конечная конфигурация группы потоков:

enter image description here

Результаты теста (100 запросов одновременно):

enter image description here

enter image description here

Результаты теста (100 одновременных пользователей) :

enter image description here

Надеюсь, это поможет вамчтобы понять.

0 голосов
/ 24 сентября 2019

JMeter работает следующим образом:

  1. Количество потоков, указанное в Группа потоков , запускается в течение периода нарастания
  2. Каждая нитьначинает выполнение сэмплеров вверх ногами (или в соответствии с логическими контроллерами )
  3. Когда поток не имеет больше сэмплеров для выполнения или циклически повторяется, он закрывается

Предполагая, что все вышеперечисленное вы можете столкнуться с ситуацией, когда некоторые потоки уже закончили свою работу и были закрыты, а некоторые еще не запущены.Проверьте Результаты теста JMeter: почему фактическое число пользователей меньше ожидаемого статья для более подробного объяснения, если это необходимо

Поэтому решения находятся в:

  • Обеспечитьбольше «итераций» на уровне группы потоков, чтобы позволить вашим пользователям зацикливаться, таким образом у вас будет 100 одновременно работающих пользователей
  • Если вам нужно выполнить какую-то форму Spike Testing и не хотите/ не может увеличить количество циклов, просто используйте Синхронизирующий таймер , таким образом JMeter будет приостанавливать потоки до тех пор, пока не будет достигнуто желаемое количество, и освободить их в тот же момент
0 голосов
/ 23 сентября 2019

Для этого вы можете использовать Synchronizing_Timer .Добавьте таймер синхронизации как дочерний элемент вашего запроса GET.

Цель SyncTimer - блокировать потоки до тех пор, пока не будет заблокировано количество потоков X, а затем все они будут освобождены одновременно.Таким образом, SyncTimer может создавать большие мгновенные нагрузки в различных точках плана тестирования.

enter image description here

Во-вторых, чтобы поддерживать постоянную загрузку 100 ЗапросВ секунду / Удар в секунду в течение некоторого времени можно использовать Таймер формирования пропускной способности .Убедитесь, что вы добавили счетчик циклов навсегда и длительность соответственно в группу потоков.

enter image description here

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