【问题标题】:JMeter stress testing the TPS can't be improvedJMeter压力测试TPS无法提高
【发布时间】:2020-01-27 15:20:11
【问题描述】:

我正在使用 JMeter 对我的项目进行压力测试。

我将 Constant Through Timer 设置为 20/s,持续 100 秒。但实际情况是:TPS 最多得到 7/s,从来没有得到 20/s。我不知道这是为什么。

我想问两个问题: 1、据我了解,JMeter可以模拟压力,所以可以达到20/s的TPS,是不是我的JMeter配置有问题? 2、如果其他情况,Jmeter只能模拟压力只依赖于服务器,是不是我的服务器有问题导致TPS无法提高?

【问题讨论】:

  • 恒定吞吐量计时器只能减慢测试速度以达到目标吞吐量。如果你的服务器响应太慢,或者你没有足够的线程来达到你的目标吞吐量,你就达不到 20/s。如果您还没有,请添加一个结果表并检查您的服务器响应时间。如果它们看起来不错,请向 ThreadGroup 添加更多线程
  • 在@Simon cmets 之上添加更多内容。检查您正在触发的请求的响应时间,使用任何侦听器来执行此操作,可能检查单个用户。一旦你有了这个数字,增加线程数以达到 20 TPS,如果响应时间是 1 秒,我知道我需要大约 20 多个线程来实现这一点,始终将线程保留在缓冲区中[使用更多线程]。您还可以使用吞吐量整形定时器来实现 TPS。
  • 谢谢西蒙,我添加了更多线程,你说得对。

标签: java testing jmeter stress-testing jmeter-5.0


【解决方案1】:

Constant Throughput Timer 只能暂停线程以限制 JMeter 到每分钟定义的请求数。此外,如果您的测试持续时间较短,它仅在“分钟”级别上或多或少是精确的 - 您可能看不到影响。

另一个因素是应用程序响应时间,因为 JMeter 在发送下一个请求之前会等待上一个响应,因此如果应用程序响应速度不够快,您将无法达到每秒所需的请求数

最后但并非最不重要的是,JMeter 应该有足够的资源来每秒发送所需数量的请求,因为如果 JMeter 配置不正确或运行 JMeter 的机器过载 - 您将无法发送请求足够快,即使应用程序可以处理更多负载。

所以建议是:

  1. 确保在Thread Group 中提供足够的线程(虚拟用户)来执行所需的负载
  2. 请务必关注JMeter Best Practices
  3. 确保监控运行 JMeter 的机器的基线健康指标(CPU、RAM、网络、磁盘等),可以使用JMeter PerfMon Plugin 完成。如果你发现资源不足,你需要找另一台机器去Distributed Testing
  4. 您可以考虑Concurrency Thread GroupThroughput Shaping Timer 组合而不是您当前的设置,它们可以通过Feedback Function 连接,因此如果当前数量不足以创建必要的负载,JMeter 将能够启动更多线程

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 2018-07-09
    • 1970-01-01
    • 2023-04-10
    • 2015-01-06
    • 1970-01-01
    • 2023-03-28
    • 2015-01-12
    相关资源
    最近更新 更多