我正在使用JMeter对我的项目进行压力测试。
我将"始终恒定"计时器设置为 20/s,持续 100 秒。但实际情况是:TPS 最多得到 7/s,而永远不会得到 20/s。我不知道这是为什么。
我想问两个问题: 1、据我了解,JMeter可以模拟应力,因此它可以在20/s时获得TPS,我的JMeter是否有任何配置错误? 2、如果对于其他情况,Jmeter可以模拟仅依靠服务器的压力,是否意味着我的服务器存在问题导致TPS无法提高?
常量吞吐量计时器只能暂停线程,以便将 JMeter限制为每分钟定义的请求数。此外,它或多或少只在"分钟"级别上精确,如果您的测试持续时间较短 - 您可能看不到影响。
另一个因素是应用程序响应时间,因为JMeter在发送下一个请求之前等待上一个响应,因此如果应用程序响应速度不够快,您将无法达到每秒所需的请求数
最后但并非最不重要的是,JMeter 应该有足够的资源来每秒发送所需数量的请求,因为如果 JMeter 配置不正确或运行 JMeter 的计算机过载 - 您将无法足够快地发送请求,即使应用程序可以处理更多负载。
所以建议是:
- 确保提供足够的线程(虚拟用户(以在线程组中执行所需的负载
- 确保遵循JMeter最佳实践
- 确保监控运行JMeter的计算机的基线健康指标(CPU,RAM,网络,磁盘等(,可以使用JMeter PerfMon插件来完成。如果您发现资源不足,则需要找到另一台机器并进行分布式测试
- 您可以考虑并发线程组和吞吐量整形计时器组合,而不是当前的设置,它们可以通过反馈功能连接,因此如果当前数量不足以创建必要的负载,JMeter 将能够启动更多线程