2016-06-30 3 views
0

Я использую JMeter для тестирования настроенного сервера Apache2. Я хотел бы проверить, может ли сервер обрабатывать 200 HTTP-запросов, поступающих полностью каждую секунду, многократно в течение большого количества секунд (например, 1 минута или даже больше). Я прочитал документацию JMeter, но немного потрудился в понимании функционирования таймеров. Я настроил тест сОтправка HTTP-запроса с точными временными интервалами с помощью JMeter

- Numbers of Threads 200 
- Ramp-up period 1 
- Loop Count 100 

Теперь, насколько я понял, и заметил, поведение JMeter, чтобы попытаться поднять 200 нитей в 1 секунду, а затем выполнить 200 * 100 = 20000 запросов так быстро, как возможно (или, по крайней мере, это поведение, которое я испытываю на своем сервере), в кусках 200 запросов за раз. Это означает, что сервер может (на самом деле) получать более 200 запросов в секунду. Поведение, которое я хотел бы воспроизвести, состоит в том, чтобы иметь 200 запросов ровно каждую секунду. Меня не волнует, что они собираются вместе в начале второго, или они рандомизированы, распределяют второе окно (один раз каждые 5 миллисекунд или что-то еще). Поэтому я пробовал несколько таймеров, но безуспешно. Я пробовал:

  • Constant Timer с задержкой резьбы 5 миллисекунд. Выполняя математику, он должен отправить запрос каждые 5 миллисекунд и стать 200 потоками, он должен отправить 200 запросов/секунду (200 * 5 = 1000 мс).
  • Constant Throughput Timer с целевой пропускной способностью 12000,0. Возможно, я ошибаюсь здесь, но это должны быть образцы в минуту, поэтому 200 запросов за 60 секунд составляют 200 * 20 = 12000 (если образец является запросом). Я не понял параметр «Рассчитать пропускную способность на основе», и я попробовал как «этот поток только» (какой?), Так и «все активные потоки».

В любом случае, ни одна из этих конфигураций не действует по мере необходимости.

+0

Попробуйте использовать 'Constant Timer' с 1000 миллисекунды. Каждый поток должен делать запрос каждую секунду, для 200 запросов в секунду. – RowlandB

+0

Чтобы вызвать 200 соединений в общей сложности за одну секунду, вы должны попробовать использовать [Синхронизирующий таймер] (http://jmeter.apache.org/usermanual/component_reference.html#Synchronizing_Timer). Цель SyncTimer заключается в блокировке потоков до тех пор, пока не будет заблокировано количество потоков N, а затем все они будут выпущены сразу. Таким образом, SyncTimer может создавать большие мгновенные нагрузки в разных точках плана тестирования. – Adnan

ответ

3

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

Constant Throughput Timer может только приостановить потоки, чтобы достичь указанных значения «Target» Пропускной способность поэтому убедитесь, что вы предоставляете достаточно виртуальных пользователей (нитей) для создания желаемых «запросов в минуту» значение.

Таким образом, чтобы получить 200 запросов/сек вы должны рассмотреть ниже вещи:

  1. Убедитесь, что у вас есть достаточного количества виртуальных пользователей (потоки) в вашей группе Thread.

  2. Пропускная способность Таймера достаточно точна на «минутном» уровне, вам нужно «подождать», чтобы он начал работать как ожидалось в течение 60 секунд. Убедитесь, что у вас есть Достаточно длительности.

  3. Используйте Постоянный счетчик пропускной способности на test plan level.

  4. Использование «Расчет пропускной способности на основе» значение как «всех активных потоков».

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

Итак, вот метод, который вы можете следовать:

Во-первых, использовать следующие конфигурации и наблюдать результаты пропускной способности.

Numbers of Threads : 200 

Ramp-up period : 60 seconds 

Loop Count : Check "Forever". 

Duration (seconds) : 360 

Если это не так, как ожидается (ниже, чем ожидалось), то увеличениеNumber of threads постепенно и наблюдать результаты пропускной способности увеличивается или нет.

Вы должны увеличить количество потоков, пока вы не получите требуемую пропускную способность.

Делая это, если вы не можете получить требуемую пропускную способность (200 запросов/сек), то приложение не может служить больше запросов в секунду, чем 200.

+0

Теперь я немного смущен. Период Ramp-up должен указывать «долгое время задержки между запуском каждого пользователя». Зачем мне ставить 60? Разве у меня не было бы 200 соединений в течение одной секунды, если система поднимет их во временном окне 60 секунд? Тогда верно ли, что пропускная способность, которую я должен достичь, составляет 12000? – McKracken

+0

Да, вы можете настроить период нарастания в соответствии с вашими требованиями. Что вы подразумеваете под 200 подключением? Я предполагаю, что это должны быть запросы или образцы. Чтобы получить 200 запросов/сек, вы должны использовать «12000» в своей целевой пропускной способности. Убедитесь, что в вашем плане тестирования достаточно количества потоков и продолжительности. – Jahan

+0

Извините, я имел в виду 200 запросов в секунду. Если я исправлю это, я могу подумать, что проблема с «Постоянным таймером пропускной способности» заключается в том, что он будет чередовать интервалы для запроса, пытаясь достичь желаемой пропускной способности. Следовательно, хотя он имитирует реальный сценарий, он не гарантирует мне ровно 200 запросов в секунду. Это мой триггер более или менее запросов, в зависимости от реального баланса. – McKracken

Смежные вопросы