性能测试——压测工具locust——脚本初步编写
User Class
一个用户类代表一个用户(如果你愿意,也可以是一群蝗虫)。Locust 将为正在模拟的每个用户生成一个 User 类的实例。用户类可以定义一些通用属性。
on_start 和 on_stop 方法
User和TaskSets可以声明一个on_start和on_stop方法,
User:在该用户开始运行时调用on_start方法,该用户停止运行时调用on_stop方法
TaskSets:对于TaskSet,on_start方法将在方法在模拟用户开始执行该TaskSet时调用,并在模拟用户停止执行该TaskSet 时调用(interruptp()被调用,或用户被杀死)。
@task装饰器
@task可以看做是一个任务,博客参考:https://blog.csdn.net/m0_70618214/article/details/131307986
标签解释
- Type:请求类型,即接口的请求方法
- Name:请求路径
- Requests:当前已完成的请求数量
- Fails:当前失败的数量
- Median:响应时间的中间值,即50%的响应时间在这个数值范围内,单位为毫秒
- 90%ile:90%响应时间,单位为毫秒
- 99%ile:99%响应时间,单位为毫秒
- Average:平均响应时间,单位为毫秒
- Min:最小响应时间,单位为毫秒
- Max:最大响应时间,单位为毫秒
- Average Size:平均响应数据大小,单位为字节;
- Current RPS:当前每秒请求数量
- Current Failures/s:每秒失败数量
每秒请求数 ( RPS )
weight属性
wait_time属性
Locust任务等待的几种方式:
constant(2)
任务执行完毕等待2秒开始下一任务
between(1,7)
任务执行完毕等待1-7秒(中间随机取值)开始下一任务
constant_pacing(6)
从任务启动开始计算时间,若任务耗时超过该时间,则任务结束后立即执行下一任务;若任务耗时不超过该时间,则等待达到该时间后执行下一任务。
constant_throughput(2)
constant_throughput(2)同constant_pacing(1/2),
表示每秒最多执行2次。
def constant_throughput(task_runs_per_second):
return constant_pacing(1 / task_runs_per_second)
用户: locust中constant_throughput()这个代表什么含义,请举例下 Kimi: 在Locust中,`constant_throughput()`是一个用于控制用户行为的函数,它允许你以一个恒定的速率执行任务。这个速率是指每秒执行的任务数量,而不是每秒的请求数,因此它可以帮助模拟一个稳定的用户行为模式。 使用`constant_throughput()`时,你需要指定一个任务的执行速率,Locust会尝试以这个速率执行任务,即使这意味着它需要在某些情况下“减速”以匹配给定的速率。 下面是一个使用`constant_throughput()`的例子: ```python from locust import constant_throughput, HttpUser, TaskSet, task class MyTaskSet(TaskSet): @task def my_task(self): # 这里是你的请求逻辑 self.client.get("/my_endpoint") class MyUser(HttpUser): tasks = [MyTaskSet] # 设置一个常量吞吐量,每秒执行一次my_task任务 constant_throughput("my_task", 1) ``` 在这个例子中,`MyUser`类中的`constant_throughput("my_task", 1)`表示每个用户将每秒执行一次`my_task`任务。Locust会根据这个设定调整每个用户执行任务的间隔,以确保达到每秒一次的恒定速率。 需要注意的是,使用`constant_throughput()`时,它只影响单个任务的执行速率,并不会影响整个用户实例的请求速率。如果你需要控制整个用户实例的请求速率,可能需要使用其他的策略或者组合使用多个任务和权重。