2009-10-04 69 views
30

我使用JMeter命令行来压力测试我们的网站api。现在,这里是我回来的示例结果:JMeter - 如何记录失败响应的完整请求?

Creating summariser <summary> 
Created the tree successfully using street_advisor.jmx 
Starting the test @ Sat Oct 03 15:22:59 PDT 2009 (1254608579848) 
Waiting for possible shutdown message on port 4445 
summary +  1 in 0.0s = 37.0/s Avg: 27 Min: 27 Max: 27 Err:  1 (100.00%) 
<snip a few more lines> 
<then i break it> 

所以我得到一个错误。

当前,所有的错误都会发送到一个文件。当我检查该文件时,它说这是一个404.呃..好吧。有没有反正我可以看到究竟是什么请求JMeter试过?

这里是我的配置文件中的一个片段:

<ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Error Writer" enabled="true"> 
      <boolProp name="ResultCollector.error_logging">true</boolProp> 
      <objProp> 
      <name>saveConfig</name> 
      <value class="SampleSaveConfiguration"> 
       <time>true</time> 
       <latency>true</latency> 
       <timestamp>false</timestamp> 
       <success>true</success> 
       <label>true</label> 
       <code>true</code> 
       <message>true</message> 
       <threadName>false</threadName> 
       <dataType>true</dataType> 
       <encoding>false</encoding> 
       <assertions>true</assertions> 
       <subresults>true</subresults> 
       <responseData>false</responseData> 
       <samplerData>false</samplerData> 
       <xml>true</xml> 
       <fieldNames>false</fieldNames> 
       <responseHeaders>true</responseHeaders> 
       <requestHeaders>true</requestHeaders> 
       <responseDataOnError>false</responseDataOnError> 
       <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> 
       <assertionsResultsToSave>0</assertionsResultsToSave> 
       <bytes>true</bytes> 
      </value> 
      </objProp> 
      <stringProp name="filename">./error.jtl</stringProp> 
     </ResultCollector> 

现在,之前有人说“检查Web服务器日志文件”,我知道我能做到这一点,是的,我已经找到了404。 。但我希望看看是否可以不访问它们,特别是如果它们在另一台服务器上和/或我无法访问它们。 请帮忙!

回答

53

View Results Tree组件显示了所有示例响应的树,允许您查看任何示例的请求和响应。您也可以使用将响应保存到文件来将整个响应保存到文件中。

+5

正确,但我通过命令行执行此操作..所以我无法访问GUI。我没有在我的问题中指出(脸红)。另外,我不知道如何通过命令行来完成它,所以我最终完成了你建议的任何操作:) – 2009-10-07 03:37:31

+2

如果你使用命令行,你可以配置你的测试以将数据发送到输出文件( jtl),然后使用此工具处理该文件:http://jmeter-plugins.org/wiki/JMeterPluginsCMD/以导出为PNG或CSV。 – hveiras 2015-10-27 18:53:16

+0

如果我正确地阅读了该问题,是否正在查找记录的请求而不是响应...? – arcseldon 2017-09-22 14:18:40

20

我发现这个线程寻找一个解决方案来记录响应只有当一个采样器失败,所以接受的解决方案是不适合我。我偶尔会在包含数十万个样本的非常高的负载下发生样本故障,所以树听者对我来说是完全不切实际的(它将达到几千兆字节的大小),所以这就是我想出的(这应该是对在OP的情况一样):

添加BeanShell Assertion(应该来所有其他的断言之后),并把它下面的代码:

if (Boolean.valueOf(vars.get("DEBUG"))) { 
    for (a: SampleResult.getAssertionResults()) { 
    if (a.isError() || a.isFailure()) { 
     log.error(Thread.currentThread().getName()+": "+SampleLabel+": Assertion failed for response: " + new String((byte[]) ResponseData)); 
    } 
    } 
} 

这将导致整个应对越来越记录到JMeter的日志这个文件在我的情况下很好,因为我知道这些响应非常小,但对于大量响应,可以进行更智能的处理。

+0

好主意!活泉! – 2012-12-18 11:34:48

+0

我添加了使用名为“DEBUG”的UDV控制日志的功能,因此更容易为常规工作负载保留断言,并仅在必要时启用断言。 – haridsv 2012-12-19 07:13:41

+0

@haridsv好决定!但是可以保存导致失败响应的requestData吗? – ShurupuS 2013-06-26 13:15:42

4

有一个'保存对文件的响应'侦听器,只有在发生错误时才能保存到文件。

相关问题