Distributed load generation
运行Locust的单个进程可以模拟相当高的吞吐量。对于一个简单的测试计划,它应该能够每秒发出数百个请求,如果使用fastttpuser,则可以达到数千个。
但是,如果您的测试计划很复杂,或者您想要运行更多的负载,则需要扩展到多个进程,甚至可能是多台机器。
为此,使用–master标志启动一个Locust的主模式实例,使用–worker标志启动多个工作实例。如果worker与您使用的master不在同一台机器上–master-host将它们指向运行master的机器的IP/主机名。
master实例运行Locust的web界面,并告诉worker线程何时生成/停止Users。worker运行你的用户,并将统计数据发回给主服务器。主实例本身不运行任何Users。
当运行Locust分布式时,主机器和辅助机器都必须有一个locustfile的副本。
备注:
因为Python不能在每个进程上充分利用多个核(参见GIL),所以通常应该在每个工作机器的处理器核上运行一个工作实例,以便利用它们的所有计算能力。
对于每个worker可以运行多少个user几乎没有限制。只要它们的总请求率/RPS不是太高,Locust/gevent可以在每个进程上运行数千甚至数万个user。
如果Locust接近耗尽CPU资源,它将记录一个警告。
例子:
在master模式下启动locust。
locust -f my_locustf