Случайный дублирующийся запрос с использованием jmeter

Я использую JMeter 4.0, пытаясь создать стресс-тест. Цель состоит в том, чтобы имитировать типы запросов, которые мы получаем в производственной среде, которые обычно представляют собой массив запросов разных типов с определенной частотой и изредка (1 из 1000), дублирующих запросы одного и того же типа в пределах миллисекунд друг от друга.

Мне удалось создать группу потоков, эмулирующую частые запросы разных типов, и вторую группу потоков, эмулирующую повторяющиеся запросы (используя таймер синхронизации, чтобы запросы запускались вместе).

Я почти закончил. Моя единственная проблема в том, что между группами потоков нет никакой связи. Если бы я хотел выполнять повторяющийся запрос один раз через каждые 1000 запросов, мне нужно было бы знать, сколько времени требуется для выполнения среднего запроса (что усложняется тем, что существует несколько типов запросов), и рассчитать время, которое потребуется для необходимо сделать примерно 1000 запросов и добавить соответствующий постоянный таймер в другую группу потоков.

Это не идеально. Я соглашусь на это, если нужно, но я надеялся, что светлые умы stackoverflow смогут пролить свет на мою проблему.

Некоторые идеи у меня были:

  • Добавьте счетчик выполнения, который циклически повторяет каждые 1000 нормальных запросов, и как только счетчик выполнения достигает 1000, я выполняю второй запрос (хотя он будет в том же потоке, и после я получил ответ от первого). Можно ли заставить это работать с помощью синхронизированного таймера?
  • Используйте таймер постоянной пропускной способности с набором «все активные потоки (общие)», для которого установлено значение 1000 выборок в минуту.

Есть ли еще способ лучше? Фактические запросы - это HTTP-запросы, хотя есть несколько шагов до подготовки сообщения к отправке. Я уже использую таймер постоянной пропускной способности в первой группе потоков (случайные запросы на обслуживание) для поддержания определенного количества запросов в минуту, поэтому я не уверен, что добавление второго таймера постоянной пропускной способности в другой группе потоков вызовет проблемы. .

Спасибо за ваше время.

2
0
485
1

Ответы 1

Вы можете добавить Если контроллер с условием 1 на каждые 1000 потоков

${__jexl3(${__threadNum} % 1000 == 0)}

и внутри If Controller выполнить ваш дублированный HTTP-запрос

  • __threadNum возвращает текущий поток / номер пользователя

Благодарю за ваш ответ! Хотя по природе HTTP-запроса, разве он не ждет ответа, прежде чем приступить к следующему? Мне нужно, чтобы и то и другое произошло одновременно. Если бы существовал способ запустить дополнительный поток для запуска HTTP-запроса, это могло бы сработать. В противном случае я все еще застрял. :(

Neil 16.04.2018 08:16

@Neil put Если перед HTTP-запросом и внутри него (если true) запустить оба HTTP-запроса, также проверьте github.com/Blazemeter/jmeter-bzm-plugins/blob/master/paralle‌ l /…

user7294900 16.04.2018 08:19

Другие вопросы по теме