Java Jmeter测试内存不足错误,即使是高堆大小分配

Java Jmeter测试内存不足错误,即使是高堆大小分配,java,memory,jmeter,performance-testing,Java,Memory,Jmeter,Performance Testing,我正在用JMeter5.0运行一些性能测试。 用我的参数解析csv文件并发送一个简单的post请求,没什么特别的。 在我的线程组并发中配置100个线程,使用100个RPS(不是很多)。 堆大小设置为最大15GB,最小1GB。 我的机器物理RAM内存是32GB。 我曾尝试将堆大小提高到20GB甚至25GB,但由于内存不足,它仍然崩溃。 我分析了gc日志,发现对于第一个15GB最大堆大小配置和第二个最大堆大小配置(约95%)由旧一代使用,gc无法清理它们。 我没有使用GUI模式和非侦听器。 第一个1

我正在用JMeter5.0运行一些性能测试。 用我的参数解析csv文件并发送一个简单的post请求,没什么特别的。 在我的线程组并发中配置100个线程,使用100个RPS(不是很多)。 堆大小设置为最大15GB,最小1GB。 我的机器物理RAM内存是32GB。 我曾尝试将堆大小提高到20GB甚至25GB,但由于内存不足,它仍然崩溃。 我分析了gc日志,发现对于第一个15GB最大堆大小配置和第二个最大堆大小配置(约95%)由旧一代使用,gc无法清理它们。 我没有使用GUI模式和非侦听器。 第一个15GB配置在1小时20分钟后崩溃,第二个仅持续了2个多小时

以下是20GB的GCeasy日志分析:
如果不看以下内容,很难说出任何有意义的话:

  • 完整堆栈跟踪(因为可能有许多面)
  • 您的
  • 测试计划的结构
  • 一般来说,OutOfMemory错误表示错误,因此请确保遵循文章中的建议


    “盲目射击”。只有在应用程序响应时间为1秒或更短的情况下,才能有100个虚拟用户的100个RPS


    如果应用程序响应时间变为>1秒,并且您正在使用或强制JMeter达到100 TPS,则可能是应用程序由于过载而无法更快响应,JMeter会添加越来越多的线程,试图达到100 RPS,直到资源耗尽

    应用程序响应时间不稳定,很少会达到1秒以上,但这是可能的。你能建议一个静态计时器来容纳这个数量的线程吗?。我已经尝试了本文中提供的所有解决方案。我将结合吞吐量整形定时器,并考虑使用,以便在应用程序响应时间超过最大可接受阈值时停止测试。是的,我正在使用吞吐量整形定时器来达到这个速率。它无法分配新的本机线程,因此您提到的这一点可能是问题所在。我已经在使用这两种线程的组合,而我的目标concurency配置为${u tstFeedback(RPS,10100,20)}。当RPS是计时器的名称时。