Python之Locust官方文档翻译01
原文: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的网页界面
提供服务器的主机名并尝试使用它!
下面的屏幕截图显示了当使用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。