如何在分布式蝗虫负载测试中提高RPS

时间:2020-10-30 10:13:23

标签: load-testing locust

无论使用4个或5个工人,我都无法超过1200 RPS。

我试图以三种变体开始蝗虫-一,四个和五个工人进程(docker-compose up --scale worker_locust=num_of_workers)。我使用了3000个客户端,孵化率为100。我正在加载的服务是一个虚拟设备,该虚拟设备始终返回yo和HTTP 200,即它什么也不做,而是返回一个常量字符串。当我有一个工作人员时,我的速度达到600 RPS(并开始看到一些HTTP错误),当我有4个工作人员时,我的速度可以达到〜1200 RPS(没有一个HTTP错误):

enter image description here

当我有5个工人时,我得到〜1200 RPS,但CPU使用率较低: enter image description here

我认为,如果CPU在5个工人的情况下(相对于4个工人的情况)发生故障,那么限制RPS的不是CPU。

我正在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的方向吗?

1 个答案:

答案 0 :(得分:1)

您应该查看常见问题解答。

https://github.com/locustio/locust/wiki/FAQ#increase-my-request-raterps

可能是您的服务器(至少一台机器)无法处理更多请求。您还可以采取其他措施来确保确实如此。您可以尝试在多个计算机上运行的FastHttpUser,或者只是增加用户数量。但是,如果可以的话,请检查服务器如何处理负载,并查看在那里可以优化的内容。