如何在分布式蝗虫负载测试中提高 RPS
Posted
技术标签:
【中文标题】如何在分布式蝗虫负载测试中提高 RPS【英文标题】:How to increase RPS in distributed locust load test 【发布时间】:2020-10-30 10:13:23 【问题描述】:无论我使用 4 人还是 5 人,我都无法超过 1200 RPS。
我尝试以 3 种变体启动 locust——1 个、4 个和 5 个工作进程 (docker-compose up --scale worker_locust=num_of_workers
)。我使用 3000 个孵化率为 100 的客户端。我正在加载的服务是一个虚拟服务,它总是返回 yo
和 HTTP 200,即它什么也不做,而是返回一个常量字符串。当我有一个工人时,我可以达到 600 RPS(并开始看到一些 HTTP 错误),当我有 4 个工人时,我可以达到 ~1200 RPS(没有一个 HTTP 错误):
当我有 5 个工人时,我得到相同的 ~1200 RPS,但 CPU 使用率较低:
我想如果 CPU 在 5-worker 情况下(相对于 4-worker 情况)出现故障,那么限制 RPS 的不是 CPU。
我在 6 核 MacBook 上运行它。
locustfile.py
我用posts基本上几乎是空请求(只是几个参数):
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 的方向吗?
【问题讨论】:
嗨。我有同样的问题。我已经尝试过分别使用一台、两台和三台计算机的一名、四名和五名工人,但 RPS 仍然相同(大约 200)。你找到解决办法了吗? 在我对事物工作方式的理解与唯一答案建议的方式之间存在一些未解决的误解。我对这种测试的理解如下:如果我的服务每秒可以处理一个请求,并且如果这个服务器被蝗虫工人每秒轰炸 1000 个请求,那么我希望看到 999 个错误响应和 1 个成功,因为工人有一秒超时。根据下面的评论,我的理解似乎不是蝗虫实际所做的,但我不明白@Cyberwiz 所说的。 【参考方案1】:您应该查看常见问题解答。
https://github.com/locustio/locust/wiki/FAQ#increase-my-request-raterps
这可能是您的服务器无法处理更多请求,至少来自您的一台机器。您还可以做其他事情来确保情况确实如此。您可以尝试 FastHttpUser,在多台机器上运行,或者只是增加用户数量。但如果可以,请检查服务器如何处理负载并查看可以在那里优化的内容。
【讨论】:
AFAI RPS 由工作人员生成,与为请求提供服务的服务器无关。如果我的服务器每秒可以处理 1 个请求,并且我用 1000 RPS 和 2 个工作人员将其淹没,那么我预计会看到 1 个服务请求和 999 个错误。我的意思是服务器的能力超出了这里的范围。 抱歉,这个假设通常是不正确的,因为服务器几乎总是实现队列和/或尝试执行比 CPU 内核更多的并发请求。如果响应时间随着负载的增加而增加,那么您需要首先在服务器端进行调查,因为这很可能是您的罪魁祸首。只有当你的服务器说你的响应时间很好(检查访问日志或其他),但蝗虫说它们很糟糕,那么也许你可以责怪蝗虫:) @Cyberwiz 感谢您的投入拉斯! RPS 是每秒请求还是每秒响应?以上是关于如何在分布式蝗虫负载测试中提高 RPS的主要内容,如果未能解决你的问题,请参考以下文章
蝗虫负载测试 - 将孵化率从 1 秒更改为 20 秒? (每 20 秒 1 只蝗虫)
我可以做些啥来加快我使用 NBomber 的负载测试? (VS LT 250 RPS 轻松;NBomber 最高 25 RPS)