Jmeter测试内存不足错误,即使对于高堆大小分配也是如此



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

以下是针对20GB的GCeasy日志分析:20GB堆大小

如果不看到,很难说出任何有意义的话

  1. 完整堆栈竞争(因为OutOfMemory可能有许多面(
  2. HProf文件的内容
  3. 测试计划的结构

通常,OutOfMemory错误表示内存泄漏,因此请确保遵循JMeter负载测试"内存不足"故障文章的9个简单解决方案中的建议。


"盲射"。只有当您的应用程序响应时间为1秒或更短时,您才能拥有100个RPS和100个虚拟用户。

如果应用程序响应时间超过1秒,并且您正在使用Precise Throughput Timer或Throughness Shaping Timer来强制JMeter达到100 TPS,则可能是由于过载,应用程序无法更快地响应,并且JMeter添加了越来越多的线程,试图达到100 RPS,直到资源耗尽。

相关内容

最新更新