JMeter聚合报告吞吐量误差分析

JMeter聚合报告吞吐量误差分析前言 最近公司有个项目要进行压测 压测完之后发现 tps 没有达到预期目标 最后自己手动计算了一遍 tps 偶然间发现一个问题 JMeter 报告中的吞吐量误差较大 下面这个聚合报告是我起的 demo 结果如下图 按照经典理论模型计算吞吐量 TPS 或者 QPS 应该是等于并发线程数除以平均响应时间 tps Thread AVG t 并发线程数除以平均响应时间 或者 tps COUNT request T 总的请求数除以总的请求时间 大家看上图汇总结果 平均响应时间 494ms 30 并发 计算得到

前言:最近公司有个项目要进行压测,压测完之后发现tps没有达到预期目标,最后自己手动计算了一遍tps,偶然间发现一个问题,JMeter报告中的吞吐量误差较大!

按照经典理论模型计算吞吐量TPS或者QPS应该是等于并发线程数除以平均响应时间:

tps =Thread / AVG(t)(并发线程数除以平均响应时间)

或者 tps = COUNT(request) / T(总的请求数除以总的请求时间)

大家看上图汇总结果:平均响应时间494ms,30并发,计算得到的吞吐量为:60.73/s,JMeter给出的吞吐量为50.04,误差相差10。

到底是什么原因导致误差这么大呢,经过我反复的压测实验,发现我的demo使用了较多的正则匹配来校验响应返回值,以及各种各样的断言,那么是不是JMeter在处理返回值消耗的时间较多导致了计算吞吐量误差的呢?

那么我们通过一个实验验证一下:首先写一个脚本,我用了单线程的脚本,请求10次看结果:

在这里插入图片描述
看结果,平均响应时间217ms,一个并发,计算得到的结果为4.61/s,JMeter给出的结果4.6/s,符合预期。

那么1.5/s的吞吐量是怎么来的呢?我们给219ms加上我们的等待500ms(这里是应该加上500 * 9 / 10),计算结果为1/(219+500 * 9 / 10)=1.49,跟JMeter给出的1.5符合,基本可以断定JMeter在计算吞吐量时候,把本机处理的过程给计算在内了。

如果JMeter在整个请求过程中平均响应时间是正常统计请求发出到接收到响应的时间,但是吞吐量却是用本机的整个线程一次循环的时间作为吞吐量计算的依据。

如果你在线程中做了别的事情,比如正则提取,参数校验,变量赋值等等都会导致吞吐量会变小。而一旦本机处理时间增加,那么压测过程中给服务端的实际压力也是比配置的要小,如果本机性能消耗过大或者某些地方发生等待,那么得到的吞吐量就可以当做一个假数据处理了。

如果发现误差较大,一定要进行结果修正,避免假数据。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234020.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JVM之内存结构详解

    JVM之内存结构详解对于开发人员来说,如果不了解Java的JVM,那真的是很难写得一手好代码,很难查得一手好bug。同时,JVM也是面试环节的中重灾区。今天开始,《JVM详解》系列开启,带大家深入了解JVM相关知识。我们不能为了面试而面试,但是学习会这些核心知识你必定会成为面试与工作中“最亮的一颗星”。本系列首发于微信公众号“程序新视界”。下面,开启我们的第一篇文章《JVM之内存结构详解》。学习也是要讲究方式方法…

    2022年6月11日
    24
  • python psutil 获取命令历史_python之psutil

    python psutil 获取命令历史_python之psutilpsutil=processandsystemutilities,psutil是个跨平台库,能够轻松实现获取系统运行的进程和系统利用率,包括CPU、内存、磁盘、网络等信息。Linux系统下的安装pipinstallpsutil现在开始看看它的使用一cpu#查看逻辑cpu的个数>>>psutil.cpu_count()2#查看物理cpu的个数>>&g…

    2022年6月1日
    30
  • linux过滤端口抓包_linux抓包命令tcpdump[通俗易懂]

    linux过滤端口抓包_linux抓包命令tcpdump[通俗易懂]tcpdump是一个功能强大的命令行数据包分析器,它是通过监听服务器的网卡来获取数据包,所有通过网络访问的数据包都能获取到。它也提供了过滤器的功能,可以获取指定的网络、端口或协议的数据包程序员日常排查问题,最常用的是使用过滤器功能获取指定端口的数据包,用来分析服务器是否收到请求、请求数据是否完整。参数介绍tcpdump命令的参数很多,详见如下这里只介绍一些常用的参数​-ccountcount表示…

    2022年8月20日
    9
  • 网页设计中另人头疼的浏览器兼容问题

    网页设计中另人头疼的浏览器兼容问题

    2021年8月7日
    73
  • mac开发php集成环境「建议收藏」

    mac开发php集成环境「建议收藏」    我是一个使用mac开发的phper,虽然使用mac开发也就不到一年,但是mac上的一些技巧还是掌握的不错的,但实际开发中光有操作技巧是不行的,环境的效率也是很重要的,因为之前一直使用homestead 虚拟机,刚开始还没感觉它有多慢,但是后来感觉homestead真是太慢了,当然这可能也跟电脑的性能有关,我经常启动好几个虚拟机,在上面跑windows系统。…

    2022年6月28日
    37
  • pycharm修改环境_pycharm更改环境

    pycharm修改环境_pycharm更改环境因为有时需要在Terminal中调试代码,而且调试前需要配置环境变量,虽然操作不麻烦,但用起来总不习惯.特别是项目比较多时,需要频繁进到设置里面去改.以前设置环境变量的操作如下图:Settings-Tools-Terminal-ProjectSettings-Enviromentvariables添加环境变量比如我们有一个文件env.list里面的内容如下:IN_HOST=’192.168.0.6’#数据库主机IPIN_PORT=8888#数据库端口IN_US

    2022年8月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号