Locust
是一款易于使用的分布式负载测试工具,基于事件驱动,使用轻量级执行单元(如协程)来实现高并发。
以下是Locust性能测试使用的一个基础Demo示例,该示例有安装Locust、编写测试脚本、启动测试以及监控测试结果。
首先,你需要在你的机器上安装Locust。最简单的方式是使用pip命令进行安装:
pip install locust
如果你打算在多个进程或机器上分布式运行Locust,建议也安装pyzmq库:
pip install pyzmq
编写一个Locust测试脚本。Locust测试脚本通常包含至少两个类:一个继承自TaskSet的类用于定义用户行为,另一个继承自HttpLocust(或Locust,如果你不使用HTTP)的类用于设置用户属性和任务集。
以下是一个简单的Locust测试脚本示例,它模拟了用户访问网站首页和关于页面的行为:
import os
from locust import task, between, TaskSet, HttpUser
class WebsiteTasks(TaskSet):
token = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6Imp3dCJ9.eyJza2V5IjoiZmQ2MTZiYjJjYTBlMmEwOGM5YTEwNmFlYzViYzY2ZGM0MmYxNmIzNDAyMzg3MzhhNzVhYmIzYjkwZjg0MmI1OSIsIm53X3VpZCI6ImUwZjBjMDZjLTdmMmYtNDRhMi1hZjQzLTU5YmEyYmY1MDU3YiJ9.Ip_iP_ZQwcsuigTTMKxlYVEbdC84oqsNzE-c1lPkcVA"
@task
def query_user_data(self):
payload = {
"conditions": {
"keyword": "",
"sort": {
"name": "create_time",
"order_by": "desc"
},
"start_time": "2024-06-01 00:00:00",
"end_time": "2025-05-26 00:00:00"
},
"page": 1,
"pagesize": 10,
"skey": ""
}
headers = {
"Authorization": self.token,
# 其他可能的请求头
}
# 发送POST请求到登录API,并设置name以便在报告中区分
self.client.post("http://localhost:8080/user/search",
json=payload,
headers=headers,
name="user")
# @task
# def query_answer(self):
# payload = {
# "query": "什么是年度?",
# "task_ids": ["ae62cf79-5870-49f0-94ca-6580b94b6e05"],
# "top_k": 3,
# "score_threshold": 0.5,
# "answer_source": ""
# }
# # headers = {
# # "Authorization": self.token,
# # # 其他可能的请求头
# # }
# # 发送POST请求到登录API,并设置name以便在报告中区分
# self.client.post("http://localhost:8080/search_answer",
# json=payload,
# name="query_answer")
# 定义用户类
class WebsiteUser(HttpUser):
tasks = [WebsiteTasks] # 将用户行为关联到用户类
wait_time = between(1, 2) # 设置用户执行任务的等待时间
# 注意:
# 1. 每个@task装饰的方法都代表一个用户可能执行的任务。
# 2. self.client是一个HttpSession实例,你可以使用它来发送HTTP请求。
# 3. name参数是可选的,但它对于Locust生成的报告非常有用,因为它允许你区分不同类型的请求。
# 4. weight参数用于调整任务之间的执行比例(默认是1)。
# 运行Locust压测
# 1. 保存上述脚本为locustfile.py(或任何你喜欢的名字)。
# 2. 打开命令行或终端,导航到包含该脚本的目录。
# 3. 运行`locust -f locustfile.py`来启动Locust的Web界面。
# 4. 在浏览器中打开Locust的Web界面(默认是http://localhost:8089),设置用户数和孵化率,然后开始压测。
安装并编写好测试脚本后,你可以通过命令行启动Locust。在命令行中,使用以下命令启动Locust的Web界面:
locust -f locustfile.py
这里的-f选项后面跟的是你的测试脚本文件名。启动后,Locust会在本地启动一个Web服务器(默认端口为8089),你可以通过浏览器访问http://127.0.0.1:8089来设置并发用户数、每秒启动的用户数等参数,并启动测试。
设置好参数后,点击Start按钮,开始测试,各个页面信息介绍如下。
在Locust的Web界面中,你可以实时看到测试的统计数据,包括每秒完成的请求数(RPS)、平均响应时间、失败率等。你可以根据这些数据来评估你的系统的性能表现。
PV
是指页面被浏览的次数,比如你打开一网页,那么这个网站的PV就算加了一次;TPS
是每秒内的事务数,比如执行了DML操作,那么相应的TPS会增加;QPS
是指每秒内查询次数,比如执行了SELECT操作,相应的QPS会增加。Charts分为三个部分,分别是:
Total Requests per Second:
展示随着用户的增加,TPS变化数。Response Times(ms):
展示接口从开始压测,到稳定实时的响应时间,随着压力增加,一般会升高。Number of Users:
展示从0开始,每秒增加10人,直到总数100后不再增加。除了Web界面外,Locust还支持命令行模式,允许你直接在命令行中运行测试并查看结果。例如:
locust -f locustfile.py --no-web -c 10 -r 2 -t 10m
这个命令表示以命令行模式运行测试,设置并发用户数为10,每秒启动2个用户,测试运行时间为10分钟。
总的来说,Locust是一个功能强大且灵活的负载测试工具,特别适合那些熟悉Python并希望快速构建和执行实时监控负载测试的开发者和测试人员。然而,每个工具都有其优势和局限性,选择合适的工具应基于具体的测试需求和场景。
以上就是Locust性能测试使用的一个基础Demo示例。Locust的强大之处在于它的易用性和高并发能力,使得性能测试变得更加简单和高效。你可以根据自己的需求编写更复杂的测试脚本,以模拟更多的用户行为和场景。希望对你有所帮助!
因篇幅问题不能全部显示,请点此查看更多更全内容