1、locust运行方式
运行Locust时,通常会使用到两种运行模式:单进程运行和多进程分布式运行。
2、单进程运行模式
1、Locust所有的虚拟并发用户均运行在单个Python进程中,具体从使用形式上,又分为no_web和web两种形式。
2、该种模式由于单进程的原因,并不能完全发挥压力机所有处理器的能力,因此主要用于调试脚本和小并发压测的情况。
3、当并发压力要求较高时,就需要用到Locust的多进程分布式运行模式。从字面意思上看,大家可能第一反应就是多台压力机同时运行,每台压力机分担负载一部分的压力生成。的确,Locust支持任意多台压力机(一主多从)的分布式运行模式,但这里说到的多进程分布式运行模式还有另外一种情况,就是在同一台压力机上开启多个slave的情况。这是因为当前阶段大多数计算机的CPU都是多处理器(multiple processor cores),单进程运行模式下只能用到一个处理器的能力,而通过在一台压力机上运行多个slave,就能调用多个处理器的能力了。
4、比较好的做法是,如果一台压力机有N个处理器内核,那么就在这台压力机上启动一个master,N个slave。当然,我们也可以启动N的倍数个slave,但是根据我的试验数据,效果跟N个差不多,因此只需要启动N个slave即可 。
3、no_web形式启动locust
如果采用no_web形式,则需使用--no-web参数,并会用到如下几个参数。
-c, --clients:指定并发用户数;
-n, --num-request:指定总执行测试次数;
-r, --hatch-rate:指定并发加压速率,默认值位1。
示例:
$ locust -f locustfile.py --host = xxxxx.com --no-web -c 1 -n 2
在此基础上,当我们想要调试Locust脚本时,就可以在脚本中需要调试的地方通过print打印日志,然后将并发数和总执行次数都指定为1。
$ locust -f locustfile.py --host = xxxxx.com --no-web -c 1 -n 1
通过这种方式,我们就能很方便地对Locust脚本进行调试了。Locust脚本调试通过后,就算是完成了所有准备工作,可以开始进行压力测试了。
4、web形式启动locust:
如果采用web形式,,则通常情况下无需指定其它额外参数,Locust默认采用8089端口启动web;如果要使用其它端口,就可以使用如下参数进行指定。
-P, --port:指定web端口,默认为8089.
终端中--->进入到代码目录: locust -f locustfile.py --host = xxxxx.com
-f 指定性能测试脚本文件
-host 被测试应用的URL地址【如果不填写,读取继承(HttpLocust)类中定义的host】
如果Locust运行在本机,在浏览器中访问http://localhost:8089即可进入Locust的Web管理页面;如果Locust运行在其它机器上,那么在浏览器中访问http://locust_machine_ip:8089即可。
5、多进程分布式运行
不管是单机多进程,还是多机负载模式,运行方式都是一样的,都是先运行一个master,再启动多个slave。启动master时,需要使用--master参数;同样的,如果要使用8089以外的端口,还需要使用-P, --port参数。
locust -f monitorAgent.py --master --port=8089
locust -f monitorAgent.py --slave
master
和slave
都启动完毕后,就可以在浏览器中通过[http://locust_machine_ip:8089](http://locust_machine_ip:8089/)
进入Locust
的Web管理页面了。使用方式跟单进程web
形式完全相同,只是此时是通过多进程负载来生成并发压力,在web
管理界面中也能看到实际的slave
数量。如果slave
与master
不在同一台机器上,还需要通过--master-host
参数再指定master
的IP地址。