导语
本次来学习一下基于locust的分布式部署,并认识一下性能测试结束后,locust提供的图表内容。
一、分布式部署
在每台压力机上安装locust,并存放好相关的测试文件,确定一台主控压力机,需要确保每台压力机在同一联网状态。
主控压力机执行命令:locust -f X.py --master
其他压力机执行命令:locust -f X.py --slave --master -host=主控压力机的IP地址
二、图表分析
运行结束后,首先看到是如下界面(图1):
显示的数据有以下这些:
(1)type:请求类型
(2)name:请求路径
(3)requests:当前请求的数量
(4)fails:当前请求失败的数量
(5)median:中间值,单位毫秒,一半服务器响应时间低于该值,而另一半高于该值
(6)average:所有请求的平均响应时间,单位毫秒
(7)min:请求的最小的服务器响应时间,单位毫秒
(8)max:请求的最大的服务器响应时间,单位毫秒
可以首先查看一下failures的tab页情况(图2),这是需要重点关注的,比如以下这种情况,远程端关闭连接,无响应。
而charts下有如下图表:
(1)每秒请求数
(2)响应时间(ms):重点关注最大响应时间,观察是否平凡出现波峰
(3)用户数
从这个用户数的图表中发现,并不是从一开始就是100个用户并发,而是从0开始逐步到100 个用户,那么想要一开始就是100个用户并发,需要如何做呢?可以加上如下代码:
# 基于locust性能测试导包
from locust import HttpLocust, task, TaskSet
# 关于集合点相关包
from gevent._semaphore import Semaphore
all_locusts_spawned=Semaphore()
all_locusts_spawned.acquire()
class PerformanceTest_search(TaskSet):
# 初始化函数,设置集合点
def on_start(self):
all_locusts_spawned.wait()
@task
def searchtest(self):
...
@task(3)
def searchtest(self):
...
三、总结
locust提供的图表信息其实也足够做一些数据上的分析,并且相对简单且直观,如果需要更详细的内容,需要借助其他工具了,比如jmeter等。
成长之路,道阻且长,后续会继续总结自己平时遇到的一些情况,加油!