【问题标题】:JMeter runs out of memory while trying to generate HTML reportJMeter 在尝试生成 HTML 报告时内存不足
【发布时间】:2020-05-06 20:24:02
【问题描述】:

我需要帮助,也许有人和JMeter report generation有类似的问题

我有带有 SOAP API 请求的 JMeter 脚本,正在下订单。在订单创建期间没有问题,但是当所有请求都完成并且 JMeter 尝试生成报告时,我收到一个错误:

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid8676.hprof ...
Heap dump file created [7011161840 bytes in 93.212 secs]
Uncaught Exception java.lang.OutOfMemoryError: Java heap space in thread Thread[StandardJMeterEngine,5,main]. See log file for details.

我在执行期间使用 JConsole 监控 JMeter,并注意到在测试运行期间堆大部分为 25%,而在报告生成期间上升到 100%。 提前致谢

【问题讨论】:

标签: api soap jmeter out-of-memory report


【解决方案1】:

错误明确指出 JMeter 缺少 Java Heap 空间以完成报告生成操作,可能是您执行了长时间运行的测试并且您的 .jtl results file 非常大,因此不适合7GB 堆。这通常表明开发人员不太熟悉内存管理,并且无法想出比一次性将所有内容加载到内存中而不是批量/缓冲区中的更好的解决方案,因此在 @ 中提出问题可能是个好主意987654323@

所以只需通过操作-Xmx 参数来增加分配给JMeter 的JVM 堆大小,即使您的系统将开始密集使用交换文件,我相信您应该能够忍受这一点。

替代选项是使用JMeter Plugins Command Line Graph Plotting Tool 生成表格/图表,但是这样您将获得单独的结果,而不是花哨的 HTML 仪表板

【讨论】:

  • 非常感谢您的帮助!我只是想澄清一下,你说我可以将堆大小增加到 7GB。在遇到此错误后我进行了研究,我相信我发现我可以将 JMeter 堆大小增加到最多 4GB。我在 jmeter.bat 文件中的设置是:set HEAP=-Xms512m -Xmx4096m。如果我可以将它增加到 7GB,它可能会解决问题。再次感谢您。
【解决方案2】:

当测试的结果文件非常大时,我已经多次遇到这个问题。您需要做的是在生成仪表板报告之前设置最大堆大小。您可以设置最大堆大小的值取决于您是在 32 位操作系统还是 64 位操作系统上运行,以及机器/VM 上有多少可用 RAM。如果您生成报告的机器没有足够的可用内存,那么您可以将结果文件复制到另一台拥有更多内存的机器上。例如,当我在测试 VM 上遇到此问题时,我通常只需将结果文件本地复制到我的 16GB 笔记本电脑并运行以下命令:

JVM_ARGS="-Xms3072m -Xmx12g" && export JVM_ARGS && jmeter -g resultsFile.jtl -o outputReport

【讨论】:

    猜你喜欢
    • 2020-05-28
    • 1970-01-01
    • 2016-10-09
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2017-04-27
    相关资源
    最近更新 更多