Терминология нагрузочного тестирования Locust против Apache Bench

Я использую Locust для нагрузочного тестирования моего сайта, и мне любопытно, в чем разница между ним и Apache Bench в терминология.

В Apache Bench вы указываете количество запросов (-n) и количество множественных запросов или параллелизм (-c).

Саранча использует немного другую терминологию. В нем есть «Пользователи для моделирования» и «Скорость вылупления (количество созданных пользователей в секунду)».

Насколько я понимаю, «Пользователи для моделирования» будет эквивалентно количеству запросов в Apache Bench. Верно ли это также для -c и «Скорость вывода», где «Скорость вывода», по сути, означает, сколько одновременных запросов будет выполнено?

Например, являются ли эти два эквивалента практически эквивалентными или близкими к ним?

ab -n 1000 -c 100 url и Locust с 1000 пользователей при скорости вывода 100 в секунду?

Примечание: я понимаю, что у этих двух инструментов очень разные возможности, и что Locust намного более гибок, чем Apache Bench. Я действительно пытаюсь понять разницу в терминологии.


person tptcat    schedule 15.08.2018    source источник


Ответы (4)


Параметры Apache Bench и параметры Locust несопоставимы. То, как количество имитированных пользователей Locust влияет на количество эффективных запросов в секунду, очень сильно зависит от кода Python вашего класса Locust и TaskSet.

Цель Locust - определить поведение пользователя с помощью кода, а затем вы можете смоделировать большое количество этих пользователей.

У вас может быть класс Locust, который не отправляет никаких запросов (хотя это было бы бессмысленно), и это привело бы к получению эффективного RPS, равного 0, независимо от количества пользователей, которые вы выберете. смоделировать. Точно так же вы могли бы написать класс Locust, у которого был только цикл, в котором он постоянно выполнял HTTP-запросы без времени ожидания, и в этом случае количество имитируемых пользователей соответствовало бы параметру -c в Apache Bench.

person heyman    schedule 17.08.2018

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

Таким образом, хотя весь сценарий для пользователя может занять 10 секунд, если вы вылупите 100 / секунду, вы получите около 1000 одновременных запросов, потому что пользователи, вылупившиеся в первую секунду, не сделают свой последний запрос до 10 секунд в , когда вылупилось еще 900 пользователей, которые тоже делают запросы.

Если, с другой стороны, вы выполняете только один запрос для каждого пользователя, то это сопоставимо с Apache Benchmark.

person Sune Kjærgård    schedule 15.08.2018
comment
Проще говоря, AB следует использовать для 1 оффа, а Locust - для сложных сценариев. Я использовал и то, и другое уже несколько лет. Это не тот же инструмент ИМО. - person Ligemer; 03.04.2019

Изучение проблемы Locust № 646 - разрешить фиксированную частоту запросов в секунду в настоящее время Locust не поддерживает определение желаемой пропускной способности с точки зрения requests per unit of time.

Вы можете рассмотреть Apache JMeter, у которого есть Таймер постоянной пропускной способности прямо из коробки и Таймер формирования пропускной способности, если вам нужна большая гибкость.

person Dmitri T    schedule 15.08.2018

Чтобы сравнить Apache Benchmark с Locust, просто протестируйте только 1 запрос, установите одинаковое время (-t 5), тех же пользователей (-c 50) и вылупитесь как можно быстрее в locust (-r 50).

-n означает все номера запросов, но в locust такого параметра нет. Итак, нам нужно большое количество (100000), которое невозможно сделать за ограниченное время (-t 5):

ab -n 100000 -c 50 -t 5 URL

locust -c 50 -r 50 -t 5 url xxx

В моем случае я обнаружил, что ab на 50% быстрее, чем locust, который писал на чистом питоне.

person Ding    schedule 06.11.2018