JMeter负载测试中如何单独统计各HTTP采样器响应数据大小
JMeter各采样器单独统计响应总大小方案
核心逻辑是给每个采样器分配独立的属性存储累计响应大小,用采样器名称作为属性唯一标识,避免不同采样器的数据互相覆盖。
修改后的Beanshell代码
import java.util.io.*; import java.lang.io.*; // 获取当前采样器的单次响应数据大小 int currentSize = prev.getResponseDataAsString().length(); // 获取当前采样器的名称 String samplerName = ctx.getCurrentSampler().getName(); // 日志记录单次响应大小 log.info("采样器[" + samplerName + "] 单次响应大小: " + currentSize); // 读取该采样器已累计的总大小,无历史记录则初始化为0 int totalSize = props.get(samplerName + "_total_size") != null ? Integer.parseInt(props.get(samplerName + "_total_size").toString()) : 0; // 累加当前响应大小并更新属性值 totalSize += currentSize; props.put(samplerName + "_total_size", String.valueOf(totalSize)); // 日志记录累计总响应大小 log.info("采样器[" + samplerName + "] 累计总响应大小: " + totalSize);
使用说明
- 将上述代码替换原Beanshell采样器中的代码,确保Beanshell采样器放在每个需要统计的HTTP采样器之后。
- 负载测试运行时,可通过JMeter日志查看每个采样器的单次响应大小和累计总大小;测试结束后,可通过
props.get("目标采样器名称_total_size")提取对应采样器的累计响应总大小,用于后续报告生成。 - 如需重置某采样器的累计数据,可添加判断逻辑(比如匹配特定采样器名称时,将对应属性值设为0)。
内容的提问来源于stack exchange,提问作者Nitin
相关产品推荐
相关产品推荐

