基于响应字段的jmeter性能测试
Performance test with jmeter based on response field
我正在尝试 运行 在支持 ElasticSearch 的 JSON REST API 上进行一些性能测试,以尝试不同过滤器对 ElasticSearch 的影响。
我不想使用标准的 jmeter 输出,因为在线时间太杂乱了。
我的 API returns 基于 took
在 ElasticSearch 上花费的时间(我们使用的 java RestHighLevelClient 中的 tookInMillis
)属性 的 org.elasticsearch.action.search.SearchResponse
。这在 API 响应的 time_taken
属性 中返回。
这是一个示例响应
{
"page_size": 1,
"current_page": 1,
"number_of_pages": 2495,
"total_results": 2495,
"additional_results_exist": false,
"time_taken": 55,
"results": [
{
// object here, we don't really care
},
{
// object here, we don't really care
}
],
"request_id": "06e8001c-caf2-46f4-bf16-08c8d1ceb079"
}
因此,用例为:
- 通过循环控制器发送请求
- 从回复中提取
time_taken
属性
- 根据
time_taken
响应 属性. 获取平均、90%、95%、99%、最小、最大统计数据
我找到了几个参考资料,提到了 JSON 提取器、RegEx 提取器、beanshell,但我没有设法让任何东西工作。
所以,我会真的感谢最小的工作设置。
我使用的jmeter版本是5.4.3
如果您能提供来自 ElasticSearch 的响应,我们将真的感激不尽,因为我们不知道它看起来如何,因此我们无法想出一个合适的JSON Extractor 设置。
我不知道“time_taken”是什么,在 Elastic Search 中它叫做 took
:
{
"took": 1, <--------------- I assume you want this value
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 0,
"relation": "eq"
},
"max_score": null,
"hits": [
]
}
}
如果是这种情况,可以使用 JSON 配置如下的提取器获得:
如果您想使用 JMeter 侦听器,您可以使用 Dummy Sampler 创建一个“假”采样器,您可以在其中控制响应时间:
这样,“假”采样器的响应时间将来自 took
ElasticSearch 响应 JMeter 将计算百分位数。
演示:
我正在尝试 运行 在支持 ElasticSearch 的 JSON REST API 上进行一些性能测试,以尝试不同过滤器对 ElasticSearch 的影响。
我不想使用标准的 jmeter 输出,因为在线时间太杂乱了。
我的 API returns 基于 took
在 ElasticSearch 上花费的时间(我们使用的 java RestHighLevelClient 中的 tookInMillis
)属性 的 org.elasticsearch.action.search.SearchResponse
。这在 API 响应的 time_taken
属性 中返回。
这是一个示例响应
{
"page_size": 1,
"current_page": 1,
"number_of_pages": 2495,
"total_results": 2495,
"additional_results_exist": false,
"time_taken": 55,
"results": [
{
// object here, we don't really care
},
{
// object here, we don't really care
}
],
"request_id": "06e8001c-caf2-46f4-bf16-08c8d1ceb079"
}
因此,用例为:
- 通过循环控制器发送请求
- 从回复中提取
time_taken
属性 - 根据
time_taken
响应 属性. 获取平均、90%、95%、99%、最小、最大统计数据
我找到了几个参考资料,提到了 JSON 提取器、RegEx 提取器、beanshell,但我没有设法让任何东西工作。
所以,我会真的感谢最小的工作设置。
我使用的jmeter版本是5.4.3
如果您能提供来自 ElasticSearch 的响应,我们将真的感激不尽,因为我们不知道它看起来如何,因此我们无法想出一个合适的JSON Extractor 设置。
我不知道“time_taken”是什么,在 Elastic Search 中它叫做 took
:
{
"took": 1, <--------------- I assume you want this value
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 0,
"relation": "eq"
},
"max_score": null,
"hits": [
]
}
}
如果是这种情况,可以使用 JSON 配置如下的提取器获得:
如果您想使用 JMeter 侦听器,您可以使用 Dummy Sampler 创建一个“假”采样器,您可以在其中控制响应时间:
这样,“假”采样器的响应时间将来自 took
ElasticSearch 响应 JMeter 将计算百分位数。
演示: