如果我必须对一个应用程序进行每小时 40,000 个用户负载测试,并且每个用户的平均花费时间为一分钟,那么我的测试方法应该是什么?
使用 1 分钟的加速期对 666 个线程/用户(40000/60=666)进行测试,并运行 JMeter 5 分钟,这是否是有效的测试?
谢谢
答案1
这将是可接受的测试,但它不会涵盖所有内容。正如你提到的,1 分钟是平均的时间,但这并不一定意味着每个用户都会花费 1 分钟。如果 10% 的用户决定花费 5 分钟,那么您将有 4000 个用户使用 5 分钟,而这种情况不适用于您的案例。
因此检查你的申请访问日志或者查看APM 工具以确定真实的负载模式并配置您的 JMeter 测试来复制它。
此外,人们通常不仅希望复制当前(或预期)的生产负荷,他们还对以下方面感兴趣:
- 是什么饱和点应用程序,即它可以为多少用户提供最佳性能(在响应时间开始增加之前)
- 在出现错误或响应时间超出可接受值之前,应用程序可以处理的最大负载是多少
- 最慢的组件是什么(瓶颈)以及如何去除它
- 当负载恢复正常时应用程序是否可以恢复,或者仍然处于“损坏”的不可用状态
- 如果应用程序长时间处于高负载状态(几个小时、一夜、几天),会发生什么情况
因此,我建议考虑负载测试以外的测试类型,即进行压力测试确定断点,浸泡测试检查是否存在与长负载持续时间相关的问题,例如内存泄漏,峰值测试当负载突然从零增加到瞬间最大在线用户数时,可扩展性测试(如果您的应用程序可以扩展 - 您可能想知道它是否真的可以扩展,以及扩展时速度变慢的因素是什么)。查看 Why “常规”负载测试是不够的文章对上述性能测试类型以及为什么需要应用它们的原因进行了更详细的解释。