性能测试——压测工具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()`时,它只影响单个任务的执行速率,并不会影响整个用户实例的请求速率。如果你需要控制整个用户实例的请求速率,可能需要使用其他的策略或者组合使用多个任务和权重。

 

 

posted @ 2024-04-22 18:04  小白龙白龙马  阅读(334)  评论(0编辑  收藏  举报