Locust 多种运行方式

运行 `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(下载数据):提供下载前面各个部分的性能指标数据
posted @ 2024-03-16 21:26  yongheng999  阅读(315)  评论(0)    收藏  举报