jMeter压力测试为200k RPM

时间:2017-12-15 10:05:30

标签: azure testing jmeter qa stress-testing

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

我们确信我们的平台支持200k + RPM负载,因为我们在特殊事件中看到过它。但是,我们运行的压力测试不会达到那么高。我们最初在CloudFlare上遇到了一些问题,所以我们就把它关了。

  • 创建一个100k用户(200k + RPM)的压力测试确实很大 处理?
  • 我们做错了什么?它可能是jMeter配置吗?
  • 在典型情况下,需要什么类型的网格才能达到此类负载?

编辑:我们监控New Relic的负载,这就是我们知道RPM的地方

2 个答案:

答案 0 :(得分:0)

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

负载生成和原始服务器之间经常会出现瓶颈,尤其是在负载平衡方面。还有其他与弹性资产名称解决有关的问题。

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

答案 1 :(得分:0)

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

  1. 200 000 RPM就像3333 RPS
  2. JMeter samplers的绝对多数是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 Practices指南中的9 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