python - 使用 Locust 的恒定并行请求数
问题描述
我想用 Locust 进行一些负载测试,以了解我的系统如何响应并行请求。
假设我的系统同时收到 10 个请求。我的第一个反应是测量这 10 个请求中每个请求的响应时间。我做了一个简单locustfile.py
的测量:
from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):
def on_start(self):
pass
def on_stop(self):
pass
@task(1)
def content_query(self):
self.client.get('/content')
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 1000
max_wait = 1000
我使用了这个文件并产生了 10 只蝗虫。我能够得到我想要的测量结果。
但后来我意识到我想知道我的系统对所有这 10 个请求的响应速度有多快。如果每个请求需要 20 毫秒才能得到回复,我不知道是否:
- 整个过程花了 20 毫秒,因为每个请求都是并行处理的
- 整个过程花了 200 毫秒,因为每个请求都被依次处理
为了衡量这一点,我有以下想法:我希望我的系统在 1 小时内一直加载 10 个请求,并测量在此期间处理了多少请求。
换句话说,只要 10 个请求中的一个成功,就应该执行另一个请求来代替它。
我怎么能用蝗虫做到这一点?
我有使用请求成功处理程序的想法,如 Locust 文档中所述:
from locust import HttpLocust, TaskSet, task, events
def my_success_handler(request_type, name, response_time, response_lenght, **kw):
print("Success")
events.request_success += my_success_handler
这将让我知道一个请求何时成功,但是然后呢?我不确定是否可以通知特定蝗虫其请求成功。
解决方案
推荐阅读
- javascript - Angular 嵌套命名的 Outlets 路由
- javascript - 异步模块返回承诺 [object Promise]
- android - 在 android 中启动一个活动会打开新活动 Kotlin 的多个实例
- sharepoint - 拒绝访问。您无权执行此操作或访问此资源设置属性包时
- android - 对于 Android 记忆匹配游戏,如何让随机图像(卡片)随机显示在屏幕上?
- ng-zorro-antd - NzUploadModule 与 AngularFireStorage
- flutter - 从 JSON 值解码时如何删除引号和符号?扑
- angular - 为什么 CSP 评估程序警告没有发现绕过,如果我放置 script-src *.somesite.com,请确保此 URL 不提供 JSONP 回复或 Angular 库?
- r - 正则表达式找到最后两个引号之间的字符串“”?
- r - 如何四舍五入到最近的未来时间戳?