Я настраиваю Locust на моем сервере, чтобы измерить ответ другого сервера. Я могу запустить его, но мне кажется, что я не могу запустить более 60 RPS. На других платформах (loader.io) я достигаю нескольких сотен (поэтому проблема не на приемном конце). Я понимаю, что мне нужно запустить несколько подчиненных, поскольку я далек от того, чтобы максимально использовать процессор для создания запросов. Теперь я попытался запустить на одном хосте 20 рабов. Тем не менее, загрузка моего процессора не составляет 100%, и RPS, кажется, не сильно увеличивается, до 65-70. (несмотря на предположительно 1000 клиентов в общей сложности). Где узкое место? Что делает RPS маленьким?
Запущена распределенная установка: 1 ведущий, большое количество ведомых.
Вот мой файл саранчи:
class UserBehavior(TaskSet):
def __init__(self, *args, **kwargs):
super(UserBehavior, self).__init__(*args, **kwargs)
@task
def process(self):
if not self.parent.data:
return
data = random.choice(self.parent.data)
with self.client.post("/process", json={"5": data}, catch_response=True) as response:
if response.status_code != 200:
response.failure("Status code: %s" % response.status_code)
else:
try:
res = response.json()
if not len(res.get("5", [])):
response.failure("Bad structure")
response.success()
except Exception as err:
print(err)
response.failure("Not Json, got error %s" % response.error)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 0
max_wait = 1
data = get_data()
Функция get_data используется для генерации выборки, которая будет использоваться во время теста. Это стандартный список списков Python.
Я должен быть в состоянии максимально использовать процессор моей машины, создавая запросы.