JMeter:HTTPJavaImpl使用冗余错误阻塞日志

时间:2015-02-17 12:24:28

标签: jmeter error-logging

对具有身份验证过程的HTTP服务器(401 + challenge,200)运行压力测试时,我得到了JMeter(v2.11)日志,其中包含以下内容:

2015/02/17 13:52:48错误--jmeter.protocol.http.sampler.HTTPJavaImpl:readResponse:java.io.IOException:服务器返回HTTP响应代码:401为URL:http://w1-load1:8080/perftest/login 2015/02/17 13:53:04错误--jmeter.protocol.http.sampler.HTTPJavaImpl:原因:java.io.IOException:服务器返回HTTP响应代码:401为URL:http://w1-load1:8080/perftest/login 2015/02/17 13:53:08 INFO - jmeter.protocol.http.sampler.HTTPJavaImpl:错误响应代码:401

我不介意HTTP 401,我在下一个请求中处理那些(按设计)

在BeanShell后处理器中的

我读了这些401并“使它们”正常(使用prev.setResponseOK())。 在BeanShell中设置响应代码不会阻止初始IOException。 在根本不使用BeanShell时也会出现问题。

然而,在压力下,对于许多线程,这些错误花费了我JMeter输出率的10%(针对不返回401的服务进行测试)。 我看到JMeter日志中的错误率约为20行/秒。 也使用JMeter远程代理进行了测试。

有人可以解释如何避免这些日志行或如何删除它们? 如果我没有编写BeanShell指令,则日志会获得更大的异常: 并且该请求被视为失败。

2 个答案:

答案 0 :(得分:1)

日志消息格式可能是

#log_format=%{time:yyyy/MM/dd HH:mm:ss} %5.5{priority} - %{category}: %{message} %{throwable}

在这种情况下,日志记录不是来自BeanShell,而是来自jmeter.protocol.http.sampler.HTTPJavaImpl。

您可以在JMeter properties文件或用户属性文件中控制此日志记录。

日志记录配置文件在jmeter.properties文件的源代码中有详细记录。

您可以通过控制包或类级别来关闭日志记录。

任何低于此包名称的内容都只会登录FATAL_ERROR

log_level.jmeter.protocol.http=FATAL_ERROR

或者在该级别,仅影响HTTPJavaImpl

log_level.jmeter.protocol.http.sampler.HTTPJavaImpl=FATAL_ERROR                                                                                                                                          

我使用此load test and JMX测试了以下内容,只是更改了实现以查看不同的日志语句。

最后在你的情况下你正在使用HTTPJavaImpl,如果你使用HTTPClient4,日志记录有点不同,似乎没有记录401返回值或将它们视为异常。

答案 1 :(得分:0)

jmeter.properties:您可以更改Sampler实现: jmeter.httpsampler = HTTPSampler2