执行负载测试以模拟200k-500k并发用户的最佳解决方案是什么



我正在寻找执行负载测试的最佳解决方案,以模拟200k-500k并发用户来测试web应用程序。有些场景与视频观看、用户内容推送(如图片、视频上传(、页面查看有关。其中一个目标就是确保CDN服务能够从用户的角度处理如此巨大的负载。

从研究来看,Jmeter似乎可以按照以下描述进行分布:

  • 码头工人https://hub.docker.com/r/thothbot/jmeter-master/
  • AWS+码头工人https://dragoscampean.medium.com/how-to-build-a-distributed-load-testing-infrastructure-with-aws-docker-and-jmeter-accf3c2aa3a3

问题:

  1. 但是,在寻找云时,如何估计需要多少从节点以及使用哪些硬件?

  2. BlazeMeter服务怎么样?看起来这项服务可以节省时间——只需避免基础设施设置。

实际上,如果没有问题1的答案,就不可能计算成本并进行比较。

有什么建议吗?使用最佳智能解决方案在严格的时间框架内进行目标测试的想法:(

Docker本身并不能解决扩展挑战,它会产生相反的效果:产生消耗资源的开销。因此,除非您有像Docker Swarm或K8S这样的容器编排解决方案,可以在物理或虚拟机上自动扩展或创建新容器,否则与在裸机或虚拟机中以分布式模式运行JMeter而不使用容器相比,它不会给您带来任何性能优势。

  1. 没有像";c6g.large AWS实例可以模拟5000个虚拟用户"因为实际数字取决于:

    • 机器硬件规格
    • 测试的性质(采样器、前置/后置处理器、断言等的性质(
    • 应用程序响应时间和大小

    因此,如果您执行返回少量数据的简单HTTP GET请求,您将能够模拟比上传大文件和接收大响应更多的用户

    所以你应该采取以下行动:

    • 确保有一个解决方案来监控JMeter引擎在CPU、RAM、网络、磁盘IO等方面的运行状况。如果你没有,你可以考虑使用JMeter-PerfMon插件

    • 确保遵循JMeter最佳实践

    • 从1个虚拟用户开始,同时逐渐增加负载,查看资源消耗

    • 当任何被监控的资源消耗开始超过合理的阈值,即总可用容量的80%时,通过查看"活动线程随时间变化"侦听器,注意有多少用户在此阶段在线

    • 这是您可以在特定的机器上模拟多少用户进行特定的测试

  2. BlazeMeter引擎的硬件容量也受到限制,并且上述限制适用,因此确保在负载测试期间监测引擎的健康状况,就好像JMeter不能足够快地发送请求一样;假阴性";即使您的应用程序每单位时间可以处理更多的请求

最新更新