我们有一个jmeter injector box,它为jmeter jvm使用了32GB的堆大小。在运行负载测试时,我们注意到当GC活动发生时,注入负载会大幅下降。有人以前经历过这种情况吗?我们可以在这里使用哪种GC算法?
eh57zj3b1#
很可能你看到的是所谓的Stop-The-World垃圾收集算法如下:
它可以在不完全停止情况下以增量方式工作,但是这种方式可能会降低吞吐量根据“最佳堆大小”一章,通常32 GB的堆空间可能是一个过度消耗
如果Java堆的占用率太高,则会频繁进行垃圾收集。如果占用率低,则垃圾收集不频繁,但会持续更长时间。..尝试将Java堆的内存占用率保持在Java堆大小的40%到70%之间... Java堆的最高占用点最好不超过最大堆大小的70%,平均占用率在40%到70%之间。如果占用率超过70%,则调整Java堆的大小
没有通用的方法,每个测试都是独立和唯一的,您需要分别为每个测试调整JVM参数(只需确保测试仍然是repeatable,以便使用相同的JVM配置重新运行测试)更多信息:
1条答案
按热度按时间eh57zj3b1#
很可能你看到的是所谓的Stop-The-World
垃圾收集算法如下:
它可以在不完全停止情况下以增量方式工作,但是这种方式可能会降低吞吐量
根据“最佳堆大小”一章,通常32 GB的堆空间可能是一个过度消耗
如果Java堆的占用率太高,则会频繁进行垃圾收集。如果占用率低,则垃圾收集不频繁,但会持续更长时间。..尝试将Java堆的内存占用率保持在Java堆大小的40%到70%之间... Java堆的最高占用点最好不超过最大堆大小的70%,平均占用率在40%到70%之间。如果占用率超过70%,则调整Java堆的大小
没有通用的方法,每个测试都是独立和唯一的,您需要分别为每个测试调整JVM参数(只需确保测试仍然是repeatable,以便使用相同的JVM配置重新运行测试)
更多信息: