【发布时间】:2015-02-17 12:24:28
【问题描述】:
在对具有身份验证过程 (401+challenge,200) 的 HTTP 服务器运行压力测试时,我得到了 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 信息 - jmeter.protocol.http.sampler.HTTPJavaImpl:错误响应代码:401
我不介意 HTTP 401,我会在下一个请求中处理那些(按设计)
在 BeanShell 后处理器中,我阅读了这些 401 并“使”它们正常(使用 prev.setResponseOK() )。 在 BeanShell 中设置响应代码不会阻止初始 IOException。 根本不使用 BeanShell 时也会出现此问题。
但是,在压力下,有很多线程,这些错误使我损失了 10% 的 JMeter 输出率(针对不返回 401 的服务进行测试)。 我看到 JMeter 日志中的错误率大约为 20 行/秒。 还使用 JMeter 远程代理进行了测试。
有人可以解释如何避免这些日志行或如何删除它们吗? 如果我未能编写 BeanShell 指令,则日志会出现更大的异常: 并且该请求被视为失败。
【问题讨论】:
-
我现在开始看到:它可能是 JMeter 代码中的一个错误。 HTTPJAvaImpl#readResponse 使用 HttpURLConnection.getContentLength() 在 401 时将私有“rememberedException”设置为 IOException。下一次调用 HttpURLConnection.getInputStream() 将抛出该异常。
-
你能提供那个来源的链接吗?
-
它的 Apache 的 JMeter HTTPJavaImpl 类和 Oracle JDK HttpURLConnection 类。两者都对公众开放。问题发生在 BeanShell 之前。所以它不相关。
标签: jmeter error-logging