我正在使用J-Meter对不同数量的用户进行性能测试。对于1个用户,平均响应时间为1.4秒,但随着用户数量的增加,平均响应时间将会增加,但相反,它正在减少。有谁能解释为什么?测试场景是我与聊天机器人进行了几次交互(2-3次交互)。
请帮助我理解以下令人困惑的结果:
1 user - 30 seconds - 1.3 seconds (average response time)
5 users - 60 seconds - 0.92 seconds (average response time)
10 users - 60 seconds - 0.93 seconds (average response time)
20 users - 120 seconds - 0.92 seconds (average response time)
答案 0 :(得分:0)
第一个用户的第一次迭代通常涉及客户端的一些开销(最常见的是DNS解析),并且在服务器端可能会有一些开销(服务器“预热”)。在以下迭代或用户中不需要该开销。
因此,您所看到的平均时间减少实际上是减少了“第一次用户第一次迭代”执行时间对总体结果的影响。这就是为什么提供足够的样本很重要的原因,因此这种局部尖峰不再那么重要了。在查看任何平均值之前,我的经验法则是至少10000次迭代,尽管每个测试人员都可以设定舒适度。
此外,当用户数量增加时,除非达到饱和点,否则不应期望平均值更差:它应该是稳定的。因此,如果您希望您的应用能够支持不超过20个用户,那么您的结果会令人惊讶,但如果您希望应用程序支持20000个用户,那么您应该不会在20个用户中出现任何平均降级。
要测试是否发生了这种情况,请尝试运行1个用户,但需要更长时间,以便总迭代次数与运行20个用户类似。大概你需要增加1个用户到20分钟的测试持续时间以获得相似的迭代次数(即相同的测试长度为120秒,但是20个用户的x20次迭代,给你粗略的20分钟总数)用户)