【问题标题】:Locust eats CPU after 2-3 hours running蝗虫在运行 2-3 小时后吃掉 CPU
【发布时间】:2021-10-08 10:12:27
【问题描述】:

我有一个正在测试的简单 HTTP 服务器。此服务器与其他 HTTP 服务器和 Cassandra DB 交互。

目前我使用 100 个用户和 1 个请求/秒,所以服务器上总共有 100 个 tps。我注意到 Docker 统计数据是 CPU 使用率越来越高,大约 2-3 小时后,CPU 使用率达到 90%,甚至更多。之后我收到了 Locust 的通知,说测量结果可能不一致。但是延迟并没有增加,所以我不知道为什么会这样。

您能否提出问题的可能原因?我认为 100 tps 应该由一个 vCPU 处理。

谢谢,

上午

【问题讨论】:

    标签: locust


    【解决方案1】:

    如果不至少查看一些代码,我们就无法确切知道出了什么问题,即使这样,其他因素(例如您正在运行或针对的环境、数据或服务器)也可能有我们不知道的其他因素关于。

    您的 Locust 用户的代码可能存在问题,例如内存泄漏,或者他们为单个工作人员处理这么多用户的工作量太大。对于只进行简单 HTTP 调用的用户,单个 CPU 通常每秒可以处理数千个请求。做更多的事情,你就会开始期望减少工人可以处理的事情。您也可能只需要更强大的 CPU(或更多 RAM 或带宽)来按您想要的规模做您想做的事情。

    进行一些分析,看看您是否可以发现代码中的任何低效之处。运行较小的测试以查看相同的行为是否在较小的负载下很明显。运行相同的负载,但在其他 CPU 上使用额外的 Locust 工作线程。

    您的数据库也可能无法处理负载。 CPU 使用率的增加可能是由于您的代码如何处理等待来自数据库的连接。也许数据库可以以可接受的速度维持 80 个用户,但任何额外的用户都会使其越来越落后,然后您的 Locust 用户等待请求数据的时间越来越长。

    如需更多建议,请查看 Locust 常见问题解答https://github.com/locustio/locust/wiki/FAQ#increase-my-request-raterps

    【讨论】:

    • 感谢您的回答。我检查了python文件,似乎发现了问题。至少现在它运行了将近一个小时,并且 cpu 负载没有增加。
    猜你喜欢
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2021-04-08
    • 2021-11-21
    • 2011-12-25
    • 2013-10-19
    • 1970-01-01
    相关资源
    最近更新 更多