蝗虫请求统计
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
文件中找到每个成功请求的详细信息。
我正在考虑使用 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
文件中找到每个成功请求的详细信息。