【问题标题】:Is the throughput value related to the response time of requests in JMeter?JMeter中的吞吐量值与请求的响应时间有关吗?
【发布时间】:2018-07-31 06:39:52
【问题描述】:

我得到以下结果,即使我增加线程数,吞吐量也没有变化。

场景#1:

线程数:10

加速期:60

吞吐量:5.8/s

平均:4025

场景#2:

线程数:20

加速期:60

吞吐量:7.8/s

平均:5098

场景#3:

线程数:40

加速期:60

吞吐量:6.8/s

平均:4098

我的 JMeter 文件由一个包含单个 GET 的 ThreadGroup 组成。

当我对响应时间更快(小于 300 毫秒)的端点执行请求时,我可以实现每秒超过 50 个请求的吞吐量。

你能看出这个瓶颈吗?

响应时间和吞吐量之间有关系吗?

【问题讨论】:

  • 是否有任何错误,尤其是场景#3?

标签: performance testing jmeter performance-testing


【解决方案1】:

就像JMeter user manual 所说的那样简单:

吞吐量 =(请求数)/(总时间)

现在假设您的测试包含一个 GET,那么吞吐量将与您的请求的平均响应时间相关。

注意 Ramp-up period:60 会在 1 分钟内开始创建线程,因此会增加总执行时间,您可以尝试将其减少到 10 或等于线程数。

但您可能有其他采样器/控制器/组件可能会影响总时间。

在您的情况下,尤其是在场景 3 中,可能某些请求失败,然后您没有计算成功事务的吞吐量。

【讨论】:

    【解决方案2】:

    在理想情况下,如果您将线程数增加 2 倍 - 吞吐量应该增加相同的系数。

    实际上,“理想”场景几乎无法实现,因此它看起来像是您的应用程序中的一个瓶颈。识别瓶颈的过程通常如下所示:

    • 修改您的测试配置以逐渐增加负载,即从 1 个虚拟用户开始,然后在 5 分钟内将负载增加到 100 个虚拟用户
    • 运行您的测试并查看Active Threads Over TimeResponse Times Over TimeServer Hits Per Second 侦听器。通过这种方式,您将能够将增加的负载与增加的响应时间相关联,并确定性能开始下降的点。更多信息请见What is the Relationship Between Users and Hits Per Second?
    • 一旦您弄清楚saturation point 是什么,您就需要知道是什么阻止您的应用程序处理更多请求,原因可能在于:

      • 应用程序只是缺少资源(CPU、RAM、网络、磁盘等),请确保监控上述资源,这可以使用 JMeter PerfMon Plugin 来完成
      • 基础架构配置不适合高负载(即应用程序或数据库线程池设置不正确)
      • 问题出在您的应用程序代码中(算法效率低、对象大、数据库查询慢)。可以使用profiler tool 获取这些项目
      • 还要确保您关注JMeter Best Practices,因为 JMeter 负载生成器端资源不足或 JMeter 配置不正确(堆太低,正在运行测试)可能无法足够快地发送请求在 GUI 模式下,使用侦听器等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多