如何在分布式性能测试中验证JMeter的性能?



我正在做一个REST API性能测试,在这个测试中我必须同时执行大量请求。为此,我使用了3个JMeter实例(1个主实例和2个从实例(。

为了给您更多的竞争,我做了一个带有2个线程组的JMeter脚本,在每个组上我有150个线程和一个恒定吞吐量计时器。

这是我用来启动测试的命令行:

./jmeter -n -t ./script.jmx -l ./samples.csv -e -o ./dashboard -R 127.0.0.1,192.168.1.96,192.168.1.175 -Gthroughput=900000 -Gduration=10 -Gvmnb=3 -G ./API.properties

在这个命令行中,throughts是我为3台服务器设定的总吞吐量(它的值除以我的第三个变量vmnb,然后每台服务器完成这部分吞吐量(,duration就是测试的持续时间。

在这种情况下,10分钟的恒定吞吐量应该是900K(每台服务器300K(。上升期为5分钟(持续时间/2(

现在我的问题是:

如果我理解正确,最后我的结果文件中应该有900K*10分钟=90000个样本(根据API(。

在我的JMeter的仪表板上,每个url只有200K和160K个样本。即使它只能看到主服务器(我想(,我也离预期的结果很远,不是吗?

仪表板图像(我还不能上传图像…(

是我遗漏了什么,还是我的虚拟机出现了一些性能问题,而它们无法提供高吞吐量?

,我想提前感谢大家的帮助

谨致问候,Marc

  1. JMeter master不生成任何负载,它只加载测试计划并将其发送到从属实例,因此在您的设置中,您有2个负载生成器
  2. 恒定吞吐量定时器只能暂停线程以JMeter的吞吐量限制在给定值,因此您需要确保有足够的线程来产生所需的吞吐量。如果你的目标是10分钟内900万个样本,这意味着每分钟90万个样本或每从机每分钟45万个样本(每秒发出7500个请求(。为了在150个线程中每秒有7500个请求,您需要0.02秒的响应时间,而平均响应时间约为1秒。

    假设以上情况,我建议切换到吞吐量整形定时器和并发线程组的组合。它们可以通过Scheduled Feedback Function连接,因此JMeter将能够启动额外的线程,以达到并保持定义的吞吐量。

  3. 此外,请确保遵循JMeter最佳实践,因为7500 RPS是一个相当高的负载,并且您需要相信JMeter能够足够快地发送请求

最新更新