对具有身份验证过程的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指令,则日志会获得更大的异常: 并且该请求被视为失败。
答案 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