如何量化单个服务器可以发出的最大RPS?

时间:2019-03-28 14:50:35

标签: locust

我正在服务器上设置Locust,以评估另一台服务器的响应。我可以运行它,但似乎无法运行超过60 RPS。在其他平台(loader.io)上,我达到了数百个(因此问题不在接收端)。我知道我需要运行多个从属服务器,因为我还没有最大限度地利用创建请求的CPU的CPU使用率。现在,我尝试在同一主机上运行20个从属。我的CPU使用率仍然不是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列表。

我应该能够最大限度地提高创建请求的计算机的CPU使用率。

0 个答案:

没有答案