Java 如何在JMeter中记录JDBC响应错误

Java 如何在JMeter中记录JDBC响应错误,java,jmeter,benchmarking,Java,Jmeter,Benchmarking,我想调试一个脚本,该脚本连接到几个JDBC连接并向它们发出JDBC请求。当它被破坏时,输出可能如下所示: summary + 34 in 00:00:08 = 4.0/s Avg: 3890 Min: 399 Max: 7535 Err: 34 (100.00%) Active: 32 Started: 32 Finished: 0 summary + 146 in 00:00:30 = 4.8/s Avg: 6443 Min: 199 Max: 1

我想调试一个脚本,该脚本连接到几个JDBC连接并向它们发出JDBC请求。当它被破坏时,输出可能如下所示:

summary +     34 in 00:00:08 =    4.0/s Avg:  3890 Min:   399 Max:  7535 Err:    34 (100.00%) Active: 32 Started: 32 Finished: 0
summary +    146 in 00:00:30 =    4.8/s Avg:  6443 Min:   199 Max: 13358 Err:   146 (100.00%) Active: 32 Started: 32 Finished: 0
summary =    180 in 00:00:39 =    4.7/s Avg:  5961 Min:   199 Max: 13358 Err:   180 (100.00%)
summary +    136 in 00:00:28 =    4.9/s Avg:  6828 Min:   196 Max: 13008 Err:   136 (100.00%) Active: 0 Started: 32 Finished: 32
summary =    316 in 00:01:07 =    4.7/s Avg:  6334 Min:   196 Max: 13358 Err:   316 (100.00%)
2021-04-01 16:15:17,217 DEBUG o.a.j.c.GenericController: Calling next on: class org.apache.jmeter.control.GenericController
2021-04-01 16:15:17,217 DEBUG o.a.j.c.GenericController: Calling next on: class org.apache.jmeter.control.GenericController
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Preparing class org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting dataSource=CSDISCO
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Ignoring property 'integerQueryTimeout' in org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Ignoring property 'integerResultSetMaxRows' in org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler
2021-04-01 16:15:17,217 DEBUG o.a.j.t.p.AbstractProperty: Running version, executing function
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting query=select * from trable;
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting queryArguments=
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting queryArgumentsTypes=
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting queryTimeout=
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting queryType=Select Statement
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting resultSetHandler=Store as String
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting resultSetMaxRows=
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting resultVariable=
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting variableNames=
我看到了100%的错误率。所以这些错误一定出现在某个地方。但我还没弄明白。我尝试过的事情:

  • 将一组不同的记录器添加到
    Log4j2.xml
    中,就像
    一样
  • -Llog_level.jmeter.protocol.jdbc=TRACE
    和/或
    -LALL
    添加到我的jmeter命令中
我在jmeter.log中得到了数千行日志,但没有一行提到错误。当脚本运行时,它们的外观如下所示:

summary +     34 in 00:00:08 =    4.0/s Avg:  3890 Min:   399 Max:  7535 Err:    34 (100.00%) Active: 32 Started: 32 Finished: 0
summary +    146 in 00:00:30 =    4.8/s Avg:  6443 Min:   199 Max: 13358 Err:   146 (100.00%) Active: 32 Started: 32 Finished: 0
summary =    180 in 00:00:39 =    4.7/s Avg:  5961 Min:   199 Max: 13358 Err:   180 (100.00%)
summary +    136 in 00:00:28 =    4.9/s Avg:  6828 Min:   196 Max: 13008 Err:   136 (100.00%) Active: 0 Started: 32 Finished: 32
summary =    316 in 00:01:07 =    4.7/s Avg:  6334 Min:   196 Max: 13358 Err:   316 (100.00%)
2021-04-01 16:15:17,217 DEBUG o.a.j.c.GenericController: Calling next on: class org.apache.jmeter.control.GenericController
2021-04-01 16:15:17,217 DEBUG o.a.j.c.GenericController: Calling next on: class org.apache.jmeter.control.GenericController
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Preparing class org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting dataSource=CSDISCO
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Ignoring property 'integerQueryTimeout' in org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Ignoring property 'integerResultSetMaxRows' in org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler
2021-04-01 16:15:17,217 DEBUG o.a.j.t.p.AbstractProperty: Running version, executing function
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting query=select * from trable;
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting queryArguments=
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting queryArgumentsTypes=
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting queryTimeout=
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting queryType=Select Statement
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting resultSetHandler=Store as String
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting resultSetMaxRows=
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting resultVariable=
2021-04-01 16:15:17,217 DEBUG o.a.j.t.TestBeanHelper: Setting variableNames=
这种情况一再重复。我不明白从Jmeter中获取一条简单的错误消息有多难。

查看:

异常消息将作为响应消息添加,因此它将出现在

因此,如果您使用您选择的文本查看器打开此文件,您将在那里看到错误消息

如果您需要在中查看它们,您可以添加并使用如下代码:

if (!prev.isSuccessful()) {
    println('Sampler ' + prev.getSampleLabel() + ' failed with ' + prev.getResponseMessage())
}    
其中,
prev
代表previous,请参阅JavaDoc以了解所有可用函数,并参阅文章以了解有关JMeter API shorhands的更多信息,这些函数可用于