【问题标题】:How should I calculate Ramp-up time in Jmeter我应该如何计算 Jmeter 中的加速时间
【发布时间】:2016-12-27 08:10:37
【问题描述】:

这里有很多问题/答案可以理解Ramp up time,但我想为我的测试用例提供一些详细信息。

测试用例:预计主页上每 5 分钟有 1200 个用户。所以这将是 5 个用户/秒。

我设置了以下thread properties

No. of Threads : 1200

Ramp-up Time - ? [I am not sure what to set]

Loop count - Forever

Scheduler - 300 Seconds[5 Minutes]

谁能帮我为我的测试用例设置ramp up time?我正在本地机器上运行测试。

我想检查服务器在 5 分钟内可以处理多少用户。我们的期望是1200 users

【问题讨论】:

    标签: performance jmeter performance-testing load-testing


    【解决方案1】:

    根据您的测试用例持续时间设置,我认为您对线程和请求感到困惑。

    简而言之:对于这种情况,您必须将 Ramp-up 用作 240 seconds

    让我详细描述一下:

    加速是所有用户到达您测试的应用服务器的时间。

    请求samplers模拟,而线程用户的模拟。

    请注意-请求总数吞吐量有关,而活跃线程数执行相同的活动与并发有关。

    根据您的要求,我假设您想要测量与 每秒请求数而不是每秒用户数相关的吞吐量。为此,您可以在测试计划级别使用Constant Throughput Timer

    恒定吞吐量计时器允许您维持服务器的吞吐量 (requests/sec)。这里的 requestssamplers线程是使用采样器请求服务器的用户/客户端。

    您可以同时使用 "Thread Group""Ultimate Thread Group"

    据我所知,无论您使用哪种类型的线程组和恒定吞吐量计时器,在结果中的测试结束时,您都会获得所需的吞吐量您在恒定吞吐量计时器中提到的,即如果您在恒定吞吐量计时器中提到 1200/min,其中 “计算吞吐量基于” 值为 “所有活动线程” 并且您的线程组中有 3 个请求(采样器),那么 JMeter 将以一种方式管理请求,即每个采样器仅生成 6.6 个请求/秒,即 1200/分钟被划分在 3 个请求中,使用 Ultimate Thread Group 还是 Thread Group 无关紧要;吞吐量计时器对所有类型的线程组都以相同的方式工作。

    现在根据您的要求:(使用线程组):

    No. of Threads : 1200
    
    Ramp-up Time - 240 (Since you want 5 users per second, 1200/5= 240)
    
    Loop count - Forever
    
    Scheduler (Duration) - 780 Seconds [13 Minutes]
    

    重要提示:

    线程组配置将与您已经提到的相同。线程数将是您想要放置的客户端负载(in you case it's 1200),duration : (240+300+240)loop : foreverramp-up : 240 是的,当您加速时,即在第一分钟通常您会收到更多请求,因为线程正在启​​动所以这是正常行为。 要测试您的场景运行 5 分钟,您应该测试 13 minutes。排除测试的前 4 分钟和最后一个 4 min,因为那是测试的预热时间,服务器和最后一个 4 min 是预热时间。

    现在根据您的要求:(使用 Ultimate Thread Group):

    Start Thread Count: 1200
    Initial delay, sec: 0
    Startup, sec: 240 (I assume you want 5 users come to your application for requesting expected samples per second)
    Hold Load for: 300 sec (Since you required 5 minutes to test for 1200 users)
    Shutdown Time, sec: 240
    

    你可以这样设置:

    不要将线程数请求数混淆,每个线程会在Hold Load for字段中创建多个请求数秒>.

    【讨论】:

    • 感谢您的回答和详细解释。你能告诉我@Adnan 的回答有什么不正确吗?
    • 对于这种情况,更具体地说是加速期和测试持续时间。测试持续时间应为 13 分钟以模拟您的要求。加速时间应该是 240 秒或 4 分钟,因为您希望应用服务器上每秒有 5 个用户。
    • 我已经在我的回答的重要部分描述了它。
    • 是的。我正在根据您给定的公会更改最终线程中的测试用例设置。
    • 我关注了最终线程组,但测试在 5 分钟后没有停止。我可以看到 1200 个活跃用户。总共需要多少分钟才​​能停止测试?
    【解决方案2】:

    Rampup 是用户到达您的应用程序的速度。 您输入的数字意味着一旦达到它,所有线程都已启动。 它越小,用户到达的速度就越快。 所以没有人可以为你回答这个问题,你需要分析你的流量。

    关于线程数,1200 个线程可能不是一个好的数字,因为 1200 个用户可以在应用程序上缓慢或快速地导航。 您需要添加一个恒定吞吐量计时器来控制您将达到的每秒交易量。

    【讨论】:

      【解决方案3】:

      您应该使用标准集中提供的Ultimate Thread Group 插件。 为了保持并发,配置应该是这样的:

      Start Thread Count: 1200
      Initial delay, sec: 0
      Startup, sec: 60
      Hold Load: 180
      Shutdown Time, sec: 60
      

      终极线程组

      这里所有的1200 threads 将在Startup time(加速时间)的60 sec 内生成并上升。这1200 个线程将在下一个180 sec 中处于活动状态,之后,这些线程将在下一个60 sec

      因此,测试的总持续时间为 300 秒,如您所愿。在Hold Load 时间(180 秒)期间,请求将被循环。 这个终极线程组将使您能够更好地控制线程。

      现在,如果您想控制transactions per second 的速率或要执行的样本数,您可以使用Constant Throughput Timer。恒定吞吐量计时器将让您控制要发送的请求流。默认的"Thread Group" 只控制用户或线程的生成方式。它不控制请求命中您的应用程序的速率。因此,为此目的,您可以使用“恒定吞吐量计时器”来控制您的请求第二。更多详细信息,您可以通过 JMeter documentation

      【讨论】:

      • 感谢您的帮助。我已经按照给定的指南设置了所有内容。现在对于默认线程组我应该设置什么?
      • 在默认线程组ramp up time= 60中,没有选项可以控制ramp down这1200个线程。
      • 好的,但是如果我使用最终线程组,那么我不需要默认线程组。对吗?
      • 我已经放置了终极线程,但是在运行它时出现了这个错误 - jmeter.JMeter: Uncaught exception: java.lang.AbstractMethodError: org.apache.jmeter.threads.AbstractThreadGroup.start
      • 当我通过插件管理器安装插件时,只有它起作用了。在此之前,我使用了单独的 JAR 终极线程到 EXT 文件夹,但这没有帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多