在对具有身份验证过程(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