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

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

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

Саранча использует немного другую терминологию. У него есть "Пользователи для симуляции" и "Скорость вывода (количество пользователей / сек)".

Насколько я понимаю, "Моделирование пользователей" будет эквивалентно количеству запросов в Apache Bench. Это также верно для -c и "Коэффициент штриховки", где "Коэффициент штриховки", по сути, сколько параллельных запросов будет сделано?

Например, эти два по существу или близки к эквивалентным?

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

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

4 ответа

Решение

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

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

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

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

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

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

Рассматривая проблему саранчи #646 - Разрешить фиксированную скорость RPS, в настоящее время саранча не поддерживает определение желаемой пропускной способности с точки зрения requests per unit of time,

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

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

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

ab -n 100000 -c 50 -t 5 URL

саранча -c 50 -r 50 -t 5 url ххх

В моем случае я считаю, что ab быстрее на 50%, чем саранча, написанная на чистом python.

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