java - JMeter压力测试TPS无法提高
问题描述
我正在使用 JMeter 对我的项目进行压力测试。
我将 Constant Through Timer 设置为 20/s,持续 100 秒。但实际情况是:TPS 最多得到 7/s,从来没有得到 20/s。我不知道这是为什么。
我想问2个问题: 1、据我了解,JMeter可以模拟压力,所以它可以达到20/s的TPS,我的JMeter有什么配置错误吗?2、如果其他情况,Jmeter只能模拟压力只依赖于服务器,是不是我的服务器有问题导致TPS无法提高?
解决方案
恒定吞吐量计时器只能暂停线程,以将 JMeter限制为每分钟定义的请求数。此外,如果您的测试持续时间较短,它仅在“分钟”级别上或多或少是精确的 - 您可能看不到影响。
另一个因素是应用程序响应时间,因为 JMeter 在发送下一个请求之前会等待上一个响应,因此如果应用程序响应速度不够快,您将无法达到每秒所需的请求数
最后但并非最不重要的一点是,JMeter 应该有足够的资源来每秒发送所需数量的请求,因为如果 JMeter 配置不正确或运行 JMeter 的机器过载 - 您将无法足够快地发送请求甚至应用程序也可以处理更多负载。
所以建议是:
- 确保提供足够的线程(虚拟用户)来执行线程组中所需的负载
- 确保遵循JMeter 最佳实践
- 确保监控运行 JMeter 的机器的基线健康指标(CPU、RAM、网络、磁盘等),可以使用JMeter PerfMon Plugin来完成。如果您发现资源不足,您将需要找到另一台机器并进行分布式测试
- 您可以考虑并发线程组和吞吐量整形计时器组合而不是您当前的设置,它们可以通过反馈功能连接,因此如果当前数量不足以创建必要的负载,JMeter 将能够启动更多线程
推荐阅读
- python - 从列表中提取值并将其连接到字符串
- python - 如何在 Python 中对列表应用正则表达式时对其进行迭代?
- angular - 角度10中对象数组的升序或降序?
- apache-spark - 写入镶木地板文件时出现 dotnet-spark 异常
- vimeo - Vimeo /me/projects 分页
- azure-machine-learning-studio - MS Azure 自动 ML - 输出 JSON 作为文本发送
- node.js - 使用设备和浏览器连接到 MQTT 代理
- xml - 在 xml 中使用“本地”命名空间
- javascript - 将状态设置反应到前一个元素的值
- r - 如何在 R Shiny 的 Highcharter 库中将点击事件附加到 hcmap 函数?