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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Redis 雪崩、穿透、击穿「建议收藏」

    Redis 雪崩、穿透、击穿「建议收藏」一、缓存雪崩:概念:缓存雪崩是指缓存中key大批量到过期时间,而这时大量请求同时打过来,引起数据库压力过大甚至down机实际生产中举例:以秒杀活动为例,QPS达到5000,这时,如果这5000个请求同时访问过来,在redis的缓存没有失效时,这个量级的qps,redis是可以承受住的。但是如果这时,所有的key都在某一个时间点失效了,而后台还没来得及重新刷缓存(缓存一般是定时任务主动刷新或修改时才刷新),那么这时,所有的请求就将会都直接打入MySQL数据库。可以想象,MySQL

    2025年11月15日
    4
  • 基于全卷积神经网络的图像分割方法详解(二)

    基于全卷积神经网络的图像分割方法详解(二)最近这段时间刚好忙完学业作业,抽空来总结一下前段时间的工作。前段时间一直忙于用深度学习做医学图像分割,采用的方法是FCN,也就是全卷积神经网络。全卷积神经网络是基于卷积神经网络的改进,使得输入和输出的尺寸一致,并且对每个像素点进行分类,达到图像分割的目的。下图是全卷积神经网络的流程图。其中第一行是提取特征步骤,然后2Xconv7和4Xconv7分别表示对conv7的输出进行2倍和4倍上采样…

    2022年6月19日
    38
  • 怎么禁止使用360浏览器(怎么才能把自带的浏览器停用)

    360浏览器6.2自带了FlashPlayer,版本为11.6,而我需要使用最新版的FlashPlayer11.9,我安装了最新版的FlashPlayer11.9后,浏览网页时,360浏览器6.2默认使用的是自带的FlashPlayer11.6因此我们必须禁用掉360浏览器自带的FlashPlayer11.6——————————

    2022年4月10日
    380
  • android bindservice方法,android BindService[通俗易懂]

    android bindservice方法,android BindService[通俗易懂]1、绑定服务1.1绑定方式通过服务链接(ServiceConnection)或直接获取Service中状态和数据信息服务链接能够获取Service的对象,因此绑定Service的组件可以调用Service中的实现的函数使用Service的组件通过Context.bindService()建立服务链接,通过Context.unbindService()停止服务链接如果在绑定过程中Service没有启…

    2022年5月1日
    193
  • ioctl函数详解_lseek函数

    ioctl函数详解_lseek函数 我这里说的ioctl函数是在驱动程序里的,因为我不知道还有没有别的场合用到了ioctl,所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、什么是ioctl。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就

    2022年10月17日
    5
  • word2019卡死_word2019卡顿严重

    word2019卡死_word2019卡顿严重解决WORD2019使用卡顿问题第一步:第二步:第三步:第四步:974)]第四步:

    2025年10月27日
    3

发表回复

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

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