运行 `Locust`时,通常会使用到两种运行模式:**单进程运行**和 **多进程分布式运行** 。
**单进程运行模式**
`Locust`所有的虚拟并发用户均运行在单个 `Python`进程中,具体从使用形式上,又分为 `no_web`**和** `web`**两种形式。该种模式由于**单进程的原因,并不能完全发挥压力机所有处理器的能力,因此主要用于调试脚本和小并发压测的情况。
**当并发压力要求较高时,就需要用到 `Locust`的多进程分布式运行模式** 。从字面意思上看,大家可能第一反应就是多台压力机同时运行,每台压力机分担负载一部分的压力生成。的确,`Locust`支持任意多台压力机(一主多从)的分布式运行模式,但这里说到的多进程分布式运行模式还有另外一种情况,就是在同一台压力机上开启多个 `slave`的情况。这是因为当前阶段大多数计算机的CPU都是多处理器(`multiple processor cores`),单进程运行模式下只能用到一个处理器的能力,而通过在一台压力机上运行多个 `slave`,就能调用多个处理器的能力了。比较好的做法是,如果一台压力机有 `N`个处理器内核,那么就在这台压力机上启动一个 `master`,`N`个 `slave`。当然,我们也可以启动 `N`的倍数个 `slave`,但是根据我的试验数据,效果跟 `N`个差不多,因此只需要启动 `N`个 `slave`即可。` `
**no_web形式启动locust:**
如果采用 `no_web`形式,则需使用 `--no-web`参数,并会用到如下几个参数。
* `-c, --clients`:指定并发用户数; (新版本的话是 -u) * `-r, --hatch-rate`:指定并发加压速率,默认值位1。
示例:
$ locust -f locustfile.py --host = xxxxx.com --no-web -c 1 **-r 1**
在此基础上,当我们想要调试 `Locust`脚本时,就可以在脚本中需要调试的地方通过 `print`打印日志,然后将并发数和总执行次数都指定为1
**如果 是新的版本的话,它的命令有所改变,变为以下: 将命令参数--no-web 更改为 --headless,将命令中指定用户并发数的参数 -c 改为 -u, 即更改命令为:**
$ locust -f locustfile.py --host = xxxxx.com --headless -u 1 -r 1 -t 10
执行测
通过这种方式,我们就能很方便地对 `Locust`脚本进行调试了。
`Locust`脚本调试通过后,就算是完成了所有准备工作,可以开始进行压力测试了。
**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`即可。
**多进程分布式运行**
不管是 `单机多进程`,还是 `多机负载`模式,运行方式都是一样的,都是先运行一个 `master`,再启动多个 `slave`。
启动 `master`时,需要使用 `--master`参数;同样的,如果要使用 `8089`以外的端口,还需要使用 `-P, --port`参数。
分布式启动的话分为两种:
1:同一台机器上启动
启动主进程 locust -f xxx.py --master (新旧版本都是 --master)
启动助功进程 locust -f xxx.py --worker (旧的版本是 --slave)
2:不同机器启动
启动主进程 locust -f xxx.py --master (新旧版本都是 --master)
启动助功进程 locust -f xxx.py --worker --master-host=主控机器ip --master-port=5557 (旧的版本是 --slave)
**运行脚本文件看的命令行效果(以web ui方式进行运行的)**
![image.png](https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/fyfile/15480/1679988457057/02e40b308a5a4e408aae568c1df27b7a.png)
然后的话你可以在我们的浏览器中输入我们的 localhost:8089 效果图如下:
![image.png](https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/fyfile/15480/1679988457057/bb4dfcda10154725abe40df9a448eaf4.png)
运行结果如下:
![image.png](https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/fyfile/15480/1679988457057/3d9ed42bf3aa4bfa93a87cd00f97b548.png)
其他的资源监控界面:
charts(图表):记录吞吐量QPS、响应时间、并发数,按照时间的统计情况
Failures(失败):性能测试脚本在执行失败后的记录(断言失败)
Exceptions(异常):脚本出现异常
Download Data(下载数据):提供下载前面各个部分的性能指标数据 标签:多种,web,--,locust,Locust,master,运行 From: https://www.cnblogs.com/yongheng999/p/18077664