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

时间:2018-07-11 07:10:44

标签: jmeter performance-testing stress-testing

我正在进行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

在此命令行中,吞吐量是我要针对3台服务器的总吞吐量(其值除以 vmnb ,即我的第三个变量,然后每个服务器都执行这部分吞吐量),而持续时间是测试的持续时间。

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

现在我的问题:

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

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

dashboard image (I can't upload an image yet...)

我是否错过了某些东西,或者我的VM遇到性能问题,而它们无法提供高吞吐量?

在此先感谢大家的帮助,

最好的问候, 马克

1 个答案:

答案 0 :(得分:0)

  1. JMeter master不会生成任何负载,它只会加载测试计划并将其发送到从属实例,因此在您的设置中,您有 2个负载生成器
  2. 恒定吞吐量计时器只能暂停线程,以限制 JMeter的吞吐量为给定值,因此您需要确保具有足够的线程< / strong>以产生所需的吞吐量。如果您的目标是在10分钟内获得9M个样本,则意味着每台从设备每分钟900k个样本或每分钟每分钟450k样本,这每秒将发出7500个请求。为了通过150个线程每秒接收7500个请求,您需要有0.02秒的响应时间,而平均响应时间约为1秒。

    假设以上内容,我建议切换到Throughput Shaping TimerConcurrency Thread Group组合。它们可以通过Scheduled Feedback Function连接,因此JMeter将能够启动额外的线程来达到并维持所定义的吞吐量。

  3. 还请确保遵循JMeter Best Practices,因为7500 RPS的负载很高,您需要确信JMeter能够足够快地发送请求