【问题标题】:jMeter stress test for 200k RPM200k RPM 的 jMeter 压力测试
【发布时间】:2018-05-29 12:32:28
【问题描述】:

我们正在尝试在我们的平台上运行压力测试以达到 200k+ RPM。我们的测试是为 jMeter 编写的。为此,我们使用了 Microsoft Azure、Blaze Meter 和 Flood.io,但无论我们做什么,都不能超过 50k RPM。

我们确信我们的平台支持 200k+ RPM 负载,因为我们在特殊活动中看到了它。但是,我们运行的压力测试不会达到那么高。我们最初在使用 CloudFlare 时遇到了一些问题,因此我们将其关闭。

  • 对 10 万用户 (200k+ RPM) 进行压力测试真的很重要 交易?
  • 我们做错了什么?可能是jMeter配置吗?
  • 在典型情况下,需要什么类型的电网才能达到这样的负载?

编辑:我们监控 New Relic 上的负载,因此我们知道 RPM

【问题讨论】:

  • 请详细说明“无论我们做什么”
  • 我们在 Flood.io 和 Azure 上运行了数十个实例。它让我们思考,也许十几个实例还不够,也许我们应该运行一千个实例。这就是我提出的三个问题的由来。

标签: azure testing jmeter qa stress-testing


【解决方案1】:

没有足够的信息来确定您的测试/应用程序出了什么问题,因此我建议您执行以下故障排除步骤:

  1. 200 000 RPM 相当于 3333 RPS
  2. JMetersamplers的绝对多数是stateful,这意味着每个JMeter线程在发送新请求之前等待上一个请求的响应,所以

    • 如果您想要 3333 RPS 并且您的应用程序响应时间为 1 秒 - 您将需要 3333 个线程(虚拟用户)
    • 如果您想要 3333 RPS 并且您的应用程序响应时间为 2 秒 - 您将需要 6666 个线程
    • 如果您想要 3333 RPS 并且您的应用程序响应时间为 3 秒 - 您将需要 9999 个线程
  3. 配置 JMeter 以保持所需吞吐量的最快和最简单的方法是使用 Concurrency Thread GroupThroughput Shaping Timer 组合。它们可以通过feedback loop 函数绑定在一起,因此如果当前数量不足以维持每秒所需的请求速率,JMeter 将在需要时创建新线程。

  4. 确保您遵循JMeter Best Practices9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure 指南中的建议,以确保为高负载正确配置JMeter

  5. 确保您的被测应用程序在 CPU、RAM、网络、磁盘等方面有足够的空间。您可以使用JMeter PerfMon Plugin 对其进行监控。
  6. 与第 5 点相同,但针对 JMeter 方面。如果 JMeter 机器缺乏硬件资源 - 它根本无法足够快地发送请求。如果您无法从单个 JMeter 主机每秒发送 3.3k 请求 - 请考虑 Distributed Testing

【讨论】:

    【解决方案2】:

    作为规划图,Flood 建议每个节点(负载生成器)使用 1K 线程/10K rpm/50 Mbps,但这实际上取决于测试计划的复杂性和目标站点性能。

    负载生成和源服务器之间经常存在瓶颈,尤其是在负载平衡方面。弹性资产的名称解析还有其他问题。

    无论如何,如果您联系 Flood 的支持工程师,他们可以帮助您识别瓶颈并在测试执行期间仔细检查您的配置/负载生成健康状况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2015-01-06
      • 1970-01-01
      • 2023-03-28
      • 2015-01-12
      相关资源
      最近更新 更多