JMeter - 如果出现错误则暂停请求

JMeter - Pause the request if it gives an error

我正在使用 Apache JMeter 发送数千个 HTTP 请求,中间有 3 秒的延迟。响应主体为 json 并以 {"errors":[ ], ...} 开头。如果有错误,它将在 [ ] 中。如果没有错误,[ ] 将为空。

我希望 JMeter 在收到错误时暂停一小段时间,然后重试请求。这样它会在需要时添加额外的缓冲区。

我需要脚本吗?我怎样才能做到这一点?

您可以通过添加 JSON JMESPath Extractor 作为 returns 和 JSON 采样器的子级并像这样配置它来获取错误数:

它将提取 errors JSON Array and store it into errors JMeter Variable

中的条目数

然后你可以使用 If Controller to check if the number of errors is above zero, it can be done using __jexl3() function 比如:

${__jexl3(${errors} > 0,)}

最后你可以使用 Flow Control Action 采样器引入延迟:

解决方案 1

根据您的要求将 JSR223 Post Processor 添加到测试计划级别、线程组或采样器。

将以下代码添加到脚本区域以检查错误并在错误后引入延迟。

int delayOnErrorInMillis = 5000

if (prev.getResponseDataAsString().startsWith('{"errors":')){
    log.info("ERROR !")
    sleep(delayOnErrorInMillis)
}