【问题标题】:How to verify JMeter's performance on a distributed performance test?如何在分布式性能测试中验证 JMeter 的性能?
【发布时间】:2018-12-19 03:07:03
【问题描述】:

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

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

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

现在我的问题:

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

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

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

我是否遗漏了什么,或者我的虚拟机存在一些性能问题,并且它们无法提供高吞吐量?

在此先感谢大家的帮助,

最好的问候, 马克

【问题讨论】:

    标签: jmeter performance-testing stress-testing


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

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

    3. 另外请务必关注JMeter Best Practices,因为 7500 RPS 是一个相当高的负载,您需要确信 JMeter 能够足够快地发送请求

    【讨论】:

    • 您好,非常感谢您的回复,我将尝试吸收所有这些内容并查看您建议的修改(我是 JMeter 的新手)。最后一个问题:当你说我只使用我的 2 个奴隶作为负载生成器时。我觉得这 3 个可以工作,因为我正在我的 3 台机器上启动 jmeter-servers(本地主机 IP 在我的命令行上传递),并且它似乎在我启动测试时运行(我有一条消息“服务器已启动”)在我的控制台上......这可能是一条错误消息吗? (我正在使用 2 个腻子窗口来访问主虚拟机)
    • 如果您在同一台机器上同时运行 JMeter Master 和 JMeter slave - 一切都很好。
    • 谢谢,我会看到你发给我的链接:)
    • 嗨,Dmitri,很抱歉仍然打扰你,但我有最后一个问题要问你:我的 JMeter 项目有很多线程组 (19),你知道我能不能把我的项目根目录上的吞吐量整形计时器?这样每个并发线程组将只指向一个Shaping Timer?有关信息,我需要同时按顺序运行我的组...
    • 当然可以,吞吐量整形定时器遵循JMeter Scoping Rules,所以如果你把它放在Test Plan 的顶部(与线程组处于同一级别) - 它会影响所有采样器线程组。如果你把它放在一个线程组下——它将影响给定线程组中的所有采样器。如果您将其作为特定采样器的子级 - 只有该采样器会受到影响。
    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2020-07-27
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多