【问题标题】:JMeter: HTTPJavaImpl clogs the logs with redundant errorsJMeter:HTTPJavaImpl 用冗余错误阻塞日志
【发布时间】: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


【解决方案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 返回值或将它们视为异常。

【讨论】:

  • 谢谢。我昨天真的发现了。这将减小日志文件的大小,但不会阻止抛出和处理的异常数量。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多