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



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

2015/02/17 13:52:48错误-jmeter.protocol.http.sampler.HTTPJavaImpl:readResponse:java.io.io异常:服务器返回URL的http响应代码:401http://w1-load1:8080/perftest/login2015/02/17 13:53:04错误-jmeter.protocol.http.sampler.HTTPJavaImpl:原因:java.io.io异常:服务器返回URL的http响应代码:401http://w1-load1:8080/perftest/login2015/02/17 13:53:08信息-jmeter.protocol.http.sampler.HTTPJavaImpl:错误响应代码:401

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

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

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

有人能解释一下如何避免这些日志行,或者我如何删除它们吗?如果我写BeanShell指令失败,日志会出现更大的异常:并且该请求被认为是失败的。

日志消息格式可能是

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

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

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

日志记录配置文件在jmeter.properties文件的源代码中有很好的文档记录。

您可以通过在包或类级别进行控制来降低日志记录。

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

log_level.jmeter.protocol.http=FATAL_ERROR

或者在该类级别,只影响HTTPJavaImpl

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

我使用这个负载测试测试了以下内容,JMX只是更改了Implementation以查看不同的日志语句。

最后,在您使用HTTPJavaImpl的情况下,如果您使用HTTPClient4,则日志记录有点不同,并且似乎不会记录401返回值或将其视为异常。

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

最新更新