一、命令行方式执行Locust
locust -f my_locust_file.py --host=http://10.2.2.84:8087 --headless -u 1000 -r 100 -t 1h30m20s --stop-timeout 99
解释:
-f 后为要执行的python文件,
-u 指定要生成的用户数,
--host 为接口ip,
-r 指定每秒启动的用户数,
-t 为运行时间。在测试运行时,可以手动更改用户计数,即使在加速完成后也是如此。按w添加1个用户或按W添加10,按s删除1个或按S删除10。
--stop-timeout 默认情况下,locust 会立即停止你的任务(甚至不等待请求完成)。如果你想让你的任务完成他们的迭代可以使用该参数,单位为秒。
二、WebUI模式下负载开启步骤
多进程运行负载:一个python进程本身并不能充分利用一个以上的内核,可以在多核机器上启动多个进程的方式来达到负载的目的。一个master,多个worker,master只负责数据收集,worker执行负载。WebUI执行时会把输入的user数量等分到worker进程中去执行。
#master进程开启执行
locust -f my_locustfile.py --master
#worker进程开启执行
locust -f my_locustfile.py --worker
分布式负载执行:即是在多个机器上执行负载。
负载执行前期确认:
1. 主机和负载机之间可以相互ping通。
2. 主机和负载机都存在对应的运行脚本。
1. 先要在master模式下启动Locust,执行如下命令,--master声明主机。
locust -f my_locustfile.py --master
2. 再依次在负载机下执行如下命令,--worker声明为负载机,--master-hosr等于master主机ip。
locust -f my_locustfile.py --worker --master-host=10.2.2.88
3. 在主机浏览器中输入主机ip➕8089端口号,通过webUI界面手动开启任务即可。
注意:主机本身不发生负载,建议负载机数量不要超过主机内核线程数,主机启动的用户数量应尽量大于负载机数量。如果是使用非WebUI模式运行分布式负载,要在执行master命令后加上--expect-workers参数指定worker数目,当启动的worker进程数达到指定数据时就会开始执行负载测试。
locust -f my_locust_file.py --headless -u 1000 -r 100 -t 1h30m20s --expect-workers 3