Java jmeter headless创建了大量在VisualVM中看到的活动线程。内存不足错误

Java jmeter headless创建了大量在VisualVM中看到的活动线程。内存不足错误,java,jmeter,Java,Jmeter,我已经使用jmeter一段时间了,但这是我第一次尝试使用headless实例 我创建了一个包含两个线程组的测试计划 TG1:生成示例数据的源文件。(432000份样本记录) TG2:使用示例数据向另一个应用程序发出请求 这可以在短时间内正常工作,但当我在较长时间内运行它时,它会随着内存不足错误而消失 我已经使用visualvm查看了正在运行的应用程序,可以看到几乎从启动开始,活动线程数就达到14000多个。用过的垃圾堆冒了出来,继续死亡 该测试预计将在43200秒的加速期内创建432000个线程

我已经使用jmeter一段时间了,但这是我第一次尝试使用headless实例

我创建了一个包含两个线程组的测试计划

TG1:生成示例数据的源文件。(432000份样本记录) TG2:使用示例数据向另一个应用程序发出请求

这可以在短时间内正常工作,但当我在较长时间内运行它时,它会随着内存不足错误而消失

我已经使用visualvm查看了正在运行的应用程序,可以看到几乎从启动开始,活动线程数就达到14000多个。用过的垃圾堆冒了出来,继续死亡

该测试预计将在43200秒的加速期内创建432000个线程。这是12小时内每秒10个线程

有趣的是,无头构建比无头构建持续时间更长,并且没有附加侦听器

我不知道这些线是从哪里来的?我假设它们是要触发的线程,它们是在前面创建的吗

我在这里遗漏了一些东西

编辑


我已经尝试了“延迟线程创建直到需要”选项。线程仍然是提前创建的,我也有同样的问题。

无头模式实际上是运行JMeter负载测试的推荐模式

你的设想是什么?如果是在12小时内处理432000个请求(仅代表每秒10个请求),那么您的配置似乎不太正确,您需要使用“告诉”JMeter将负载保持在每秒10个请求的速率


如果您想创建432000个<>强>活动< /强>并发线程,您需要考虑,但是我不认为您真的需要这么多并发线程。 您为Jmeter分配了多少内存?为Jmeter实例分配的load generator机器和堆的硬件配置是什么?432000是非常高的单机线程数。您应该避免使用所有侦听器、报告器、断言,并在非UI模式下运行。如果您已经在遵循相同的方法,那么您可能应该查找分布式jmeter实例并进行测试。对于恒定吞吐量计时器,请“竖起大拇指”。