我正在进行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遇到性能问题,而它们无法提供高吞吐量?
在此先感谢大家的帮助,
最好的问候, 马克
答案 0 :(得分:0)
恒定吞吐量计时器只能暂停线程,以限制 JMeter的吞吐量为给定值,因此您需要确保具有足够的线程< / strong>以产生所需的吞吐量。如果您的目标是在10分钟内获得9M个样本,则意味着每台从设备每分钟900k个样本或每分钟每分钟450k样本,这每秒将发出7500个请求。为了通过150个线程每秒接收7500个请求,您需要有0.02秒的响应时间,而平均响应时间约为1秒。
假设以上内容,我建议切换到Throughput Shaping Timer和Concurrency Thread Group组合。它们可以通过Scheduled Feedback Function连接,因此JMeter将能够启动额外的线程来达到并维持所定义的吞吐量。
还请确保遵循JMeter Best Practices,因为7500 RPS的负载很高,您需要确信JMeter能够足够快地发送请求