Я не могу пройти 1200 RPS, независимо от того, использую ли я 4 или 5 рабочих.
Я пытался запустить locust в трех вариантах - один, четыре и пять рабочих процессов (docker-compose up --scale worker_locust=num_of_workers
). Я использую 3000 клиентов с коэффициентом вывода 100. Загружаемая мной служба - это пустышка, которая всегда возвращает yo
и HTTP 200, т. Е. Ничего не делает, а возвращает постоянную строку. Когда у меня есть один рабочий, я получаю до 600 запросов в секунду (и начинаю видеть некоторые ошибки HTTP), когда у меня 4 рабочих, я могу получить до ~ 1200 запросов в секунду (без единой ошибки HTTP):
Когда у меня 5 рабочих, я получаю примерно 1200 запросов в секунду, но с меньшей загрузкой ЦП:
Я полагаю, что если ЦП вышел из строя в случае с 5 рабочими (относительно случая с 4 рабочими), то это не ЦП ограничивает RPS.
Я использую это на 6-ядерном MacBook.
В locustfile.py
я использую сообщения, по сути, почти пустые запросы (всего несколько параметров):
from locust import HttpUser, task, between, constant
class QuickstartUser(HttpUser):
wait_time = constant(1) # seconds
@task
def add_empty_model(self):
self.client.post(
"/models",
json={
"grouping": {
"grouping": "a/b"
},
"container_image": "myrepo.com",
"container_tag": "0.3.0",
"prediction_type": "prediction_type",
"model_state_base64": "bXkgc3RhdGU=",
"model_config": {},
"meta": {}
}
)
Мой docker-compose.yml:
services:
myservice:
build:
context: ../
ports:
- "8000:8000"
master_locust:
image: locustio/locust
ports:
- "8089:8089"
volumes:
- ./:/mnt/locust
command: -f /mnt/locust/locustfile.py --master
worker_locust:
image: locustio/locust
volumes:
- ./:/mnt/locust
command: -f /mnt/locust/locustfile.py --worker --master-host master_locust
Может кто-нибудь подсказать, в каком направлении двигаться к 2000 RPS?