Python之Locust官方文档翻译01

发布时间 2023-10-16 20:48:51作者: hook_what

原文:https://docs.locust.io/en/stable/quickstart.html

第一个测试

Locust 测试本质上只是一个 Python 程序,它向您想要测试的系统发出请求。这使得它非常灵活,尤其擅长实现复杂的用户流。但是它也可以进行简单的测试,所以让我们从这个开始:

from locust import HttpUser, task

class HelloWorldUser(HttpUser):
    @task
    def hello_world(self):
        self.client.get("/hello")
        self.client.get("/world")

这个用户将一次又一次地先后对/hello/world 发出 HTTP 请求。有关完整的解释和更现实的示例,请参见 编写locustfile

/hello/world 更改为您想要测试的网站/服务上的一些实际路径,将代码放入您当前工作目录中名为 locustfile.py 的文件中,然后在当前目录下运行 locust:

$ locust
[2021-07-24 09:58:46,215] .../INFO/locust.main: Starting web interface at http://*:8089
[2021-07-24 09:58:46,285] .../INFO/locust.main: Starting Locust 2.17.0

Locust的网页界面

打开 http://localhost:8089

提供服务器的主机名并尝试使用它!

下面的屏幕截图显示了当使用40个并发用户(每秒0.5个用户)对性能稍差的服务器运行此测试时的情况。

在 Charts 选项卡下,你可以找到每秒请求数(RPS)、响应时间和运行用户数:

解释性能测试结果是相当复杂的(并且大多超出了本手册的范围) ,但是如果您的图开始看起来像这样,目标服务/系统就无法处理负载,并且您已经发现了一个瓶颈。
当我们达到大约9个用户时,响应时间开始快速增加,以至于即使 Locust 仍然产生更多的用户,每秒的请求数量也不再增加。目标服务是“超载”或“饱和”的。
如果您的响应时间没有增加,那么添加更多的用户,直到您找到服务的断点,或者庆祝您的服务已经足以满足您的预期负载。
如果您需要一些帮助来深入挖掘服务器端问题,或者您在产生足够的负载以使系统饱和方面遇到麻烦,请查看 Locust 常见问题解答。

直接使用命令行 / headless

使用 Locust Web UI 是完全可选的。您可以在命令行上提供加载参数,并以文本形式获得结果报告:

$ locust --headless --users 10 --spawn-rate 1 -H http://your-server.com
[2021-07-24 10:41:10,947] .../INFO/locust.main: No run time limit set, use CTRL+C to interrupt.
[2021-07-24 10:41:10,947] .../INFO/locust.main: Starting Locust 2.17.0
[2021-07-24 10:41:10,949] .../INFO/locust.runners: Ramping to 10 users using a 1.00 spawn rate
Name              # reqs      # fails  |     Avg     Min     Max  Median  |   req/s failures/s
----------------------------------------------------------------------------------------------
GET /hello             1     0(0.00%)  |     115     115     115     115  |    0.00    0.00
GET /world             1     0(0.00%)  |     119     119     119     119  |    0.00    0.00
----------------------------------------------------------------------------------------------
Aggregated             2     0(0.00%)  |     117     115     119     117  |    0.00    0.00
(...)
[2021-07-24 10:44:42,484] .../INFO/locust.runners: All users spawned: {"HelloWorldUser": 10} (10 total users)
(...)

有关更多细节,请参见 Run without the web UI

更多选项

要在多个 Python 进程或计算机上运行 Locust,可以使用--master命令行参数启动一个 Locust 主进程,然后使用--worker 命令行参数启动任意数量的 Locust worker 进程。有关更多信息,请参见分布式负载生成

查看所有可用选项类型: locust --help 或查看 Configuration

下一步

现在,让我们更深入地了解 locustfiles 以及它们的功能: 编写 locustfile