我目前正在尝试了解JMeter的垃圾收集如何影响响应时间。根据我的参考资料,我发现花在GC上的时间会被加到整个运行时间中。在我的例子中,我必须减少或删除GC所需的时间。更可取的是较短的GC停顿。同时也在寻找我的问题。我看过这篇https://howtojboss.wordpress.com/2012/07/31/concurrent-high-throughput-performance-testing-with-jmeter/的文章,他们说解决方案是使用并发标记清除(CMS)收集器。
GC="-XX:+UseConcMarkSweepGC"但这对我的情况不起作用。在使用所有类型的垃圾收集器,如串行、并行、G1GC、ZGC和Shenandoah GC之后,我得到了相同的运行时间。我已经在JMeter文件的行上尝试了这些修改
set GC_ALGO = -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1 ReservePercent=20但无论我使用哪种类型的GC,我都会同时在我的图表中获得峰值。例如,如果我用50k的记录测试,在3/4 (接近33k)处获得峰值,同样地,对于5k的记录,峰值恰好接近3.3k。我在这里附上了示例图表:please look at the example Graph。如果还有其他办法,请告诉我。
我使用的是JMeter版本5.4.1,我的系统堆大小是
Heap = -Xms8g -Xmx12g -XX:MaxMetaspaceSize=4g如果图中的时间峰值不是由于垃圾收集活动引起的。那么,在特定时间间隔出现这些时间峰值的原因可能是什么?请让我知道是否有任何其他原因,这些时间峰值。
发布于 2021-11-02 13:02:07
我不认为响应时间峰值与垃圾收集有关,当JVM正在执行完整的GC时,由于暂停,吞吐量可能会下降,但响应时间不应该改变。
尝试使用JConsole、JVisualVM或JMeter PerfMon Plugin监视JMeter的GC活动,并注意其他指标,如CPU、内存、交换使用率等,并将响应时间峰值与JMeter负载生成器发生的事情关联起来。
如果你不会看到任何可疑的东西--在被测试的系统端重复这个练习。
还要确保遵循JMeter Best Practices,并尝试在distributed mode中运行JMeter
https://stackoverflow.com/questions/69810392
复制相似问题