蝗虫请求统计

Locust Request Statistics

我正在考虑使用 Locust 进行一些性能测试。我更熟悉 Python 并且发现 locust 比 JMeter JMX 更容易阅读。

我习惯用 JMeter 做的一件事是从多次运行中生成我自己的平均值、90pct、95pct 和 99pct 报告。为此,我编写了一个脚本来解析 JMeter 日志,其中包含有关每个请求的信息(响应时间、负载大小等),然后将所有运行组合到一个数据集中并生成平均值和百分位数。

我似乎找不到在 Locust 中获得这种级别的详细日志记录的选项。我试过 --logfile= 但该文件不包含任何关于个人请求的信息。我试过 --csv= 并且输出仅包含摘要信息 - 在尝试确定运行组合中的百分位数时无法使用。

有没有办法获取每个请求的详细日志信息?

我不确定这是否是最简单的方法,但您可以使用 locust event hooks mechanism

让我们从命令行开始python内置http服务器:

python -m http.server

并使用以下内容创建文件 example.py

#!/usr/bin/env python
from locust import HttpUser, TaskSet, task, events

stat_file = open('stats.csv', 'w')

class UserBehavior(TaskSet):
    """ Defines user behaviour in traffic simulation """

    @task()
    def index(self):
        self.client.get("/")


class WebsiteUser(HttpUser):
    """ Defines user that will be used in traffic simulation """
    tasks = {UserBehavior:2}
    min_wait = 3000
    max_wait = 5000


# hook that is fired each time the request ends up with success
@events.request_success.add_listener
def hook_request_success(request_type, name, response_time, response_length, **kw):
    stat_file.write(request_type + ";" + name + ";" + str(response_time) + ";" + str(response_length) + "\n")


@events.quitting.add_listener
def hook_quitting(environment, **kw):
    stat_file.close()

现在在 example.py 所在的同一文件夹中 运行 从命令行:

locust -f example.py --headless -u 10 -r 1 --host=http://localhost:8000

如果您在一段时间后停止它,您会在 stats.csv 文件中找到每个成功请求的详细信息。