如何在JMeter/BlazeMeter中从聚合报告排除连接/套接字超时请求
彻底排除JMeter/BlazeMeter中超时请求统计的方法
核心处理逻辑
要让连接超时(ConnectTimeoutException)或套接字超时(SocketTimeoutException)的请求完全不进入监听器统计,不能仅标记为成功,而是要让JMeter直接忽略该样本:
- 调用
sampleResult.setIgnore(true)方法,这会让所有监听器跳过对该样本的统计计算。 - 可以通过两种方式判断超时:检查响应码字符串,或直接判断异常类型(后者更精准)。
示例代码(JSR223 PostProcessor中使用)
// 方式1:通过响应码判断 if (sampleResult.getResponseCode().contains("ConnectTimeoutException") || sampleResult.getResponseCode().contains("SocketTimeoutException")) { sampleResult.setIgnore(true); } // 方式2:直接判断异常类型(推荐) Throwable throwable = sampleResult.getThrowable(); if (throwable instanceof org.apache.http.conn.ConnectTimeoutException || throwable instanceof java.net.SocketTimeoutException) { sampleResult.setIgnore(true); }
关键注意点
- 把这段代码放在JSR223 PostProcessor中,确保其作用域覆盖所有需要处理的HTTP请求。
- 设置
setIgnore(true)后,该请求不会出现在聚合报告、摘要报告等任何监听器的统计结果里,BlazeMeter云端报告也不会包含它。 - 如果需要在日志中标记这类请求但不统计,可以额外添加
sampleResult.setSampleLabel("Ignored-Timeout: " + sampleResult.getSampleLabel()),不影响忽略统计的效果。
内容的提问来源于stack exchange,提问作者yazhdevi subramani
相关产品推荐
相关产品推荐

