JMeter压力测试TPS无法提升

JMeter stress testing the TPS can't be improved

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

我把Constant Throughout Timer设置为20/s,持续100s。但实际情况是:TPS最多能达到7/s,绝不会达到20/s。我不知道这是为什么。

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

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

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

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

所以建议是:

  1. 确保您提供足够的线程(虚拟用户)来在 Thread Group
  2. 中执行所需的负载
  3. 确保遵循JMeter Best Practices
  4. 确保监控 JMeter 运行(CPU、RAM、网络、磁盘等)机器的基线健康指标,可以使用 JMeter PerfMon Plugin. If you detect the lack of resources you will need to find another machine and go for Distributed Testing
  5. 您可以考虑 Concurrency Thread Group and Throughput Shaping Timer combination instead of your current setup, they can be connected via Feedback Function 如果当前数量不足以创建必要的负载,JMeter 将能够启动更多线程