Locust.io: управление параметром запроса в секунду

Я пытался загрузить тестовый сервер API с помощью Locust.io на экземплярах, оптимизированных для вычислений EC2. Он предоставляет простой в настройке параметр для настройкивремя ожидания последовательного запроса а такжеколичество одновременных пользователей, Теоретически,число оборотов в секунду = время ожидания X #_users, Однако во время тестирования это правило нарушается для очень низких порогов#_users (в моем эксперименте около 1200 пользователей). Переменныеhatch_rate, #_of_slavesв том числе внастройка распределенного теста не имел никакого влияния начисло оборотов в секунду.

Информация об эксперименте

Тест проводился на вычислительном узле C3.4x AWS EC2 (образ AMI) с 16 vCPU, с общим SSD и 30 ГБ ОЗУ. Во время теста максимальная загрузка ЦП достигала 60% (зависит от скорости вывода - которая контролирует параллельные процессы, вызываемые), в среднем оставаясь ниже 30%.

Locust.io

setup: использует pyzmq и настраивается с каждым ядром vCPU в качестве ведомого. Настройка одного запроса POST с телом запроса ~ 20 байтов и телом ответа ~ 25 байтов. Частота сбоев запроса: <1%, среднее время ответа 6 мс.

переменные: время между последовательными запросами, установленное на 450 мс (мин: 100 мс и макс: 1000 мс), скорость штриховки при удобных 30 в секунду, иRPS измеряется путем изменения#_users.

RPS следует уравнению, предсказанному для 1000 пользователей. Увеличение#_users после этого доход снизился до 1200 пользователей.#_users здесь не независимая переменная, меняющаявремя ожидания также влияет на RPS. Однако изменение настройки эксперимента на экземпляр с 32 ядрами (экземпляр c3.8x) или 56 ядрами (в распределенной установке) вообще не влияет на RPS.

Так на самом деле, как контролировать RPS? Есть ли что-то очевидное, чего мне здесь не хватает?

Ответы на вопрос(1)

Ваш ответ на вопрос