前言:
locust是完全基于python,是一个简单易用的分布式负载测试工具
Locust特性
使用Python编写模拟用户行为的代码,无需繁琐的配置
分布式可扩展,能够支持上百万用户
自带Web界面
不仅能测试web系统,也可以测试其它
Locust思想
在测试过程中,一群用户将访问你的网站。每个用户的行为由你编写的Python代码定义,同时可以从Web界面中实时观察到用户的行为。
Locust完全是事件驱动的,因此在单台机器上能够支持几千并发用户访问。与其它许多基于事件的应用相比,Locust并不使用回调,而是使用gevent,而gevent是基于协程的,可以用同步的方式来编写异步执行的代码。每个用户实际上运行在自己的greenlet中
http请求完全是基于requests库。Locust支持http、https协议,还支持测试其他协议,websocket等,只要采用Python调用对应的库就可以了
Locust和jmeter、lr优点对比3
性能测试很难在单机上获得很高的并发量,lr、jmeter这类工具采用进程和线程来压测,单机并发量不高。(一般都要用几台电脑做压力发射机)
ocust并发机制摈弃了进程和线程,采用协程(gevent)机制。协程避免了系统级资源调度,可以大大提高单机并发能力
locust的安装
cmd命令下执行 pip install locustio 进行安装
注:小波之前就安装过了~~就不在赘述了
安装完成以后可以查看 locust命令有哪些选项,键入locust --help命令可以查看
如果打算分布式运行locust则需要安装pyzmp
cmd命令下执行pip install pyzmq 执行安装
下面是小波对公司的一个接口进行压测例子
例如:编写名为locust_yace.py文件,如下:
在上面的代码中首先集成了TaskSet类来定义用户的行为,(比如访问网站的行为,或者接口请求的行为)紧接着HttpLocust类表示一个用户,这个用户具有哪些行为,以及该用户在执行下一个任务之前应该等待多长时间。
接下来就可以启动性能测试了~~
cmd命令进入到压测文件目录下,执行测试
-f locust_yace.py 指定性能压测文件
2.--host 指定被测试url的主机地址(IP地址)(如果是接口,就写接口地址即可)
接下来,通过浏览器访问localhost:8089
点击start swarming进行测试:
1.Type:请求类型;
2.Name:请求路径;
3.requests:当前请求的数量;
4.fails:当前请求失败的数量;
5.Median:中间值,单位毫秒,一般服务器响应时间低于该值,而另一半高于该值;
6.Average:所有请求的平均响应时间,毫秒;
7.Min:请求的最小的服务器响应时间,毫秒;
8.Max:请求的最大服务器响应时间,毫秒;
9.Content Size:单个请求的大小,单位字节;
10.reqs/sec:每秒钟请求的个数。
这个是通过浏览器测试的形式,可以通过测试场景设计的时间长度运行,压力测试时间(一般都是5分钟以上)足够后,需要手动点击stop按钮,结束压力测试。