采样器前缀生成JMeter仪表板

时间:2018-01-17 08:12:27

标签: jmeter

我正在运行JMeter非GUI模式并生成仪表板并且它正在工作,

下一步我想为每个采样器添加UUID,以便更容易在日志中找到我的请求

因此,采样器名称为:登录$ {uuid},operation1 $ {uuid},... 而uuid变量设置之前。

在GUI模式下,它有助于更​​快,更轻松地找到问题。

当我执行非GUI模式时,它在java.lang.OutOfMemoryError: GC overhead limit exceeded.

上失败

基本上(我做了一个较短的测试)它分别创建一个报告,每个登录(和操作),

Login f9b9c9e9-15ac-4b96-a454-20d8fc7d8844  1   0   0.00%   622.00  622 622 622.00  622.00  622.00  1.61    0.60    0.90
Login f67871f5-f447-4125-85e7-981592d9bff2 ...

如何将所有登录/特定操作聚合到单个结果中,并在非GUI中使用仪表板执行来防止此类异常?

日志中的异常:

2018-01-17 09:06:17,302 ERROR o.a.j.JMeter: Uncaught exception: 
java.lang.OutOfMemoryError: GC overhead limit exceeded
    at org.apache.jmeter.report.processor.graph.AbstractGraphConsumer.addKeyData(AbstractGraphConsumer.java:352) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.graph.AbstractGraphConsumer.stopConsuming(AbstractGraphConsumer.java:563) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.AbstractSampleConsumer.stopProducing(AbstractSampleConsumer.java:241) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.FilterConsumer.stopConsuming(FilterConsumer.java:112) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.AbstractSampleConsumer.stopProducing(AbstractSampleConsumer.java:241) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.FilterConsumer.stopConsuming(FilterConsumer.java:112) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.AbstractSampleConsumer.stopProducing(AbstractSampleConsumer.java:241) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.NormalizerSampleConsumer.stopConsuming(NormalizerSampleConsumer.java:125) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.CsvFileSampleSource$PrivateProducer.stopProducing(CsvFileSampleSource.java:339) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.CsvFileSampleSource.produce(CsvFileSampleSource.java:185) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.CsvFileSampleSource.run(CsvFileSampleSource.java:238) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.dashboard.ReportGenerator.generate(ReportGenerator.java:244) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.JMeter$ListenToTest.generateReport(JMeter.java:1198) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.JMeter$ListenToTest.testEnded(JMeter.java:1134) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:230) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:498) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_05]

修改

尝试为每个请求添加控制器并添加到user.properties:

 jmeter.reportgenerator.exporter.html.series_filter=^(Login|O‌​peration1|Operation2‌​)(-success|-failure)‌​?$

我在UUID的所有事务上插入parent,并在操作名称中调用Transaction controller,如Login:

仍然在仪表板(小型执行)中,操作不会被视为一个组。

现在得到不同的错误,但仍然是OutOfMemoryError:

2018-01-17 13:25:07,766 ERROR o.a.j.JMeter: Uncaught exception: 
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3175) ~[?:1.8.0_05]
    at java.util.ArrayList.grow(ArrayList.java:246) ~[?:1.8.0_05]
    at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:220) ~[?:1.8.0_05]
    at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:212) ~[?:1.8.0_05]
    at java.util.ArrayList.add(ArrayList.java:443) ~[?:1.8.0_05]
    at org.apache.jmeter.report.processor.ListResultData.addResult(ListResultData.java:54) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.graph.AbstractGraphConsumer.addKeyData(AbstractGraphConsumer.java:353) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.graph.AbstractGraphConsumer.stopConsuming(AbstractGraphConsumer.java:563) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.AbstractSampleConsumer.stopProducing(AbstractSampleConsumer.java:241) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.FilterConsumer.stopConsuming(FilterConsumer.java:112) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.AbstractSampleConsumer.stopProducing(AbstractSampleConsumer.java:241) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.FilterConsumer.stopConsuming(FilterConsumer.java:112) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.AbstractSampleConsumer.stopProducing(AbstractSampleConsumer.java:241) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.NormalizerSampleConsumer.stopConsuming(NormalizerSampleConsumer.java:125) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.CsvFileSampleSource$PrivateProducer.stopProducing(CsvFileSampleSource.java:339) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.CsvFileSampleSource.produce(CsvFileSampleSource.java:185) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.processor.CsvFileSampleSource.run(CsvFileSampleSource.java:238) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.report.dashboard.ReportGenerator.generate(ReportGenerator.java:244) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.JMeter$ListenToTest.generateReport(JMeter.java:1198) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.JMeter$ListenToTest.testEnded(JMeter.java:1134) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:230) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:498) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_05]

1 个答案:

答案 0 :(得分:0)

选项是执行以下操作:

  • 添加一个Transaction Sampler作为Login $ {UUID}
  • 的父级

在user.properties中,仅包含父事务名称:

  

jmeter.reportgenerator.exporter.html.series_filter = ^(搜索|在线订单)( - 成功| -failure)$

您可以使用jmeter中的菜单:

Help > Export Transaction names

您可能需要增加 -Xmx ,并且您应该打开一个问题,将堆转储提供给jmeter进行分析,这可能是一个错误,但可能仅仅是由于多个不同的交易。< / p>