如何验证JMeter';什么是分布式性能测试的性能?

如何验证JMeter';什么是分布式性能测试的性能?,jmeter,performance-testing,stress-testing,Jmeter,Performance Testing,Stress Testing,我正在做一个RESTAPI性能测试,在这里我必须同时做很多请求。为此,我使用了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 -Gthroughpu

我正在做一个RESTAPI性能测试,在这里我必须同时做很多请求。为此,我使用了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)

现在我的问题是:

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

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

我是否遗漏了一些东西,或者我的虚拟机出现了一些性能问题,它们无法提供高吞吐量

我要提前感谢大家的帮助

致以最良好的祝愿, 马克

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

    假设以上情况,我建议切换到和组合。它们可以通过连接,以便JMeter能够启动额外的线程,以达到并保持定义的吞吐量

  • 另外,请确保遵循以下步骤,因为7500 RPS是一个相当高的负载,您需要确信JMeter能够足够快地发送请求


  • 您好,非常感谢您的回复,我将尝试吸收所有这些,并查看您建议的修改(我是JMeter新手)。最后一个问题:当你说我只使用我的2个奴隶作为负载发生器。我感觉这3台机器可以工作,因为我正在我的3台机器上启动jmeter服务器(本地主机IP在我的命令行上传递),它似乎在我在控制台上启动测试时运行(我有一条消息“server started”)。。。这是否可能是一条错误的消息?(我使用2个putty窗口访问主vm)如果您在同一台机器上同时运行JMeter master和JMeter slave,一切正常。谢谢,我会看到您发送给我的链接:)嗨,Dmitri,很抱歉仍然打扰您,但我有最后一个问题要问您:我的JMeter项目有很多线程组(19),你知道我能否把吞吐量成形计时器放在我的项目的根上吗?这样,每个并发线程组将只指向一个成形计时器?作为参考,我需要同时并按顺序运行我的组…当然可以,吞吐量成形计时器会遵守,因此如果您将其放在顶部(与线程组处于同一级别),它将影响所有线程组中的所有采样器。如果你把它放在一个线程组下-它将影响给定线程组中的所有采样器。如果将其作为特定采样器的子采样器,则只有该采样器会受到影响。