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 运行 所在的机器超载 - 你即使应用程序可以处理更多负载,也无法足够快地发送请求。
所以建议是:
- 确保您提供足够的线程(虚拟用户)来在 Thread Group
中执行所需的负载
- 确保遵循JMeter Best Practices
- 确保监控 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
- 您可以考虑 Concurrency Thread Group and Throughput Shaping Timer combination instead of your current setup, they can be connected via Feedback Function 如果当前数量不足以创建必要的负载,JMeter 将能够启动更多线程
我正在使用 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 运行 所在的机器超载 - 你即使应用程序可以处理更多负载,也无法足够快地发送请求。
所以建议是:
- 确保您提供足够的线程(虚拟用户)来在 Thread Group 中执行所需的负载
- 确保遵循JMeter Best Practices
- 确保监控 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
- 您可以考虑 Concurrency Thread Group and Throughput Shaping Timer combination instead of your current setup, they can be connected via Feedback Function 如果当前数量不足以创建必要的负载,JMeter 将能够启动更多线程