Locust分布式测试

以前提到过可以利用压力测试开框架对服务器进行压力测试,单机的并发量可能达不到我们希望的并发数量,这个时候就需要进行分布式的压力测试了,通过堆叠机器数量来达到高并发的模拟。

locust的分布测试

locust支持分布式测试,首先需要一台机器作为master,用来监控其他slave机器的并发和测试结果。
指定master的命令如下:

1
locust -f my_loucstfile.py --master

然后在作为slave的机器上运行:

1
locust -f my_locustfile.py --slave --master-host=x.x.x.x

x.x.x.x 是master机器的ip地址,这里需要注意的是,master需要开放5557和5558端口,也可以通过参数修改端口。

参数解释

–master
设置locust为master模式。网页交互会在这台节点机器中运行。

–slave
设置locust为slave模式。

–master-host=X.X.X.X
可选项,与–slave一起结合使用,用于设置master模式下的master机器的IP/hostname(默认设置为127.0.0.1)

–master-port=5557
可选项,与–slave一起结合使用,用于设置master模式下的master机器中Locust的端口(默认为5557)。注意,locust将会使用这个指定的端口号,同时指定端口+1的号也会被占用。因此,5557会被使用,Locust将会使用5557和5558。

–master-bind-host=X.X.X.X`
可选项,与–master一起结合使用。决定在master模式下将会绑定什么网络接口。默认设置为*(所有可用的接口)。

–master-bind-port=5557
可选项,与–master一起结合使用。决定哪个网络端口master模式将会监听。默认设置为5557。注意Locust会使用指定的端口号,同时指定端口+1的号也会被占用。因此,5557会被使用,Locust将会使用5557和5558。

测试

写完的压力测试脚本,需要分别上传到每个机器上,当slave机器连上master的时候,master的命令行会输出下面的提示:

1
[2018-05-31 06:31:04,129] hft-test-stress/INFO/locust.runners: Client u'ubuntu_ba5ed98647bb789d7859a27aa98b7c13' reported as ready. Currently 3 clients ready to swarm.

在master的web界面上可以看到当前服务的slave数量,然后可以在web界面上进行压力测试了。

你的支持我的动力