当我通过命令行运行我的Jmeter测试脚本时,线程计数最多为200,测试将正确执行,最后关闭所有进程并生成正确的结果文件。这大约需要5分钟。




随着我将线程数增加到300或更多,并执行测试,它会继续执行,而不会还没结束。没关系,如果我待了一整天,直到我通过Crtl + c手动结束测试或关闭命令提示符本身,测试才结束。

测试的任何可能原因只是不会因为大量线程而停止?

#1 楼

在Jmeter GUI中打开您的测试计划,并检查HTTP响应超时限制。为此,在Jmeter中,


打开TEST计划
转到“线程”下的HTTP Request Sampler。在“超时”部分中,设置“响应超时”限制并保存测试计划。

现在尝试从命令行运行测试。达到超时限制后,它将停止测试!

#2 楼

找出原因的唯一方法是查看jmeter.log文件,并使用jstack命令进行线程转储以查看其挂起的位置以及原因。您还可以将以下行添加到user.properties文件:

jmeter.save.saveservice.autoflush=true


并查看.jtl结果文件以查看其是否正在更新。您也可以在GUI模式下使用您选择的侦听器打开它,以查看响应时间是否合理,因为这可能在被测应用程序上引起问题。

但是可能不正确JMeter配置,例如:


JMeter带有默认的Java Heap大小512MB,这不足以进行大规模负载测试
人们在测试运行期间经常使用很多侦听器,毫无意义,会大大降低速度。
断言,计时器,后处理器的使用效率低也是原因。

有关全面的说明以及更多的性能和调优技巧,请参阅9个JMeter负载测试“内存不足”故障解决方案的简易解决方案。