-
locust官方链接
什么是locust?
Locust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。
这个想法是,在测试期间,一群蝗虫 会攻击你的网站。您定义了每个蝗虫(或测试用户,如果您愿意)的行为,并且实时地从Web UI监视群集过程。这将有助于您在让真正的用户进入之前进行测试并识别代码中的瓶颈。
Locust完全基于事件,因此可以在一台计算机上支持数千个并发用户。与许多其他基于事件的应用程序相比,它不使用回调。相反,它通过gevent使用轻量级过程。每个蝗虫蜂拥到你的网站实际上是在自己的进程内运行(或者是greenlet,这是正确的)。这允许您在Python中编写非常富有表现力的场景,而不会使代码复杂化。
示例:
from locust import HttpLocust, TaskSet, task class MyTaskSet(TaskSet): @task(2) def index(self): self.client.get("/") @task(1) def about(self): self.client.get("/about/") class MyLocust(HttpLocust): task_set = MyTaskSet min_wait = 5000 max_wait = 15000
@task采用可选的权重参数,可用于指定任务的执行率。在以下示例中,task2的执行次数是task1的两倍:
通常还需要声明min_wait和max_wait 属性。这些是模拟用户在执行每个任务之间等待的最小和最大时间(以毫秒为单位)。min_wait和max_wait默认为1000,因此如果未声明min_wait和max_wait,则每个任务之间的蝗虫将始终等待1秒。
-
集群分布式运行locust
一旦单个机器不足以模拟您需要的用户数量,Locust就支持运行分布在多台机器上的负载测试。为此,您可以使用–master标志以主模式启动一个Locust实例。这是将运行Locust的Web界面的实例,您可以在其中启动测试并查看实时统计信息。主节点不会模拟任何用户本身。相反,您必须使用该–slave标志以及 –master-host(指定主节点的IP /主机名)启动一个或多个可能的多个从属Locust节点。常见的设置是在一台计算机上运行单个主服务器,然后在从属计算机上为每个处理器核心运行一个从属实例。
注意
在运行Locust分布式时,主机和每台从机都必须有蝗虫测试脚本的副本。
示例
要在主模式下启动蝗虫:
locust -f my_locustfile.py --master
然后在每个从站上(192.168.0.14用主机的IP 替换):
locust -f my_locustfile.py --slave --master-host=192.168.0.14
参数解释:
–master
在主模式下设置蝗虫。Web界面将在此节点上运行。
–slave
将蝗虫设置为从属模式。
–master-host=X.X.X.X
可选择与–slave设置主节点的主机名/ IP 一起使用(默认为127.0.0.1)
–master-port=5557
可选择与–slave设置主节点的端口号一起使用(默认为5557)。请注意,locust将使用指定的端口以及端口号+1。因此,如果使用5557,蝗虫将使用端口5557和5558。
–master-bind-host=X.X.X.X
可选择与–master。一起使用。确定主节点将绑定到的网络接口。默认为*(所有可用接口)。
–master-bind-port=5557
可选择与–master。一起使用。确定主节点将侦听的网络端口。默认为5557.请注意,locust将使用指定的端口以及端口号+1。因此,如果使用5557,蝗虫将使用端口5557和5558。
–expect-slaves=X
在使用时启动主节点时使用–no-web。然后主节点将等待,直到测试开始之前X从节点已连接。
-
打开Locust的Web界面
使用上述命令行之一启动Locust后,应打开浏览器并将其指向http://127.0.0.1:8089(如果您在本地运行Locust)。