【问题标题】:JMeter Dashboard generation by Sampler prefix通过 Sampler 前缀生成 JMeter Dashboard
【发布时间】:2018-01-17 08:12:26
【问题描述】:

我正在运行 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 的事务上插入父级,并以操作的名称调用事务控制器,作为登录:

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

现在得到不同的错误,但仍然是 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]

【问题讨论】:

  • OOM什么时候发生?你有一些可用的堆转储吗?分享它进行分析会很有趣
  • 附加日志。有用吗?

标签: jmeter


【解决方案1】:

一种选择是执行以下操作:

  • 添加一个事务采样器作为登录 ${UUID} 的父级

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

jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$

您可以在 jmeter 中使用菜单:

您可能需要增加 -Xmx 并且您应该打开一个问题,将堆转储提供给 jmeter 进行分析,这可能是一个错误,但可能只是由于不同事务的数量。

【讨论】:

  • 如果我有 5 个操作:登录、操作 1、操作 2,我需要在 user.properties 中为每个操作设置 Transaction 控制器和一行?
  • 是的,每个都有一个父 TC,类似 jmeter.reportgenerator.exporter.html.series_filter=^(Login|Operation1|Operation2)(-success|-failure)?$
  • 你能说明你是如何配置 jmeter.reportgenerator.exporter.html.series_filter 和你的测试计划的结构吗?谢谢
  • 添加到问题
猜你喜欢
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-06
  • 1970-01-01
  • 2013-03-11
相关资源
最近更新 更多