• Jmeter的Throughput和平均响应时间计算方法整理


    整理了下Jmeter的Throughput和平均RT的计算,如下公式:

    TPS=(sample样本数)/(最后一个线程启动的时间+最后一个线程持续的时间-第一个线程启动的时间)
    
    RT=所有sample样本响应时间和/样本个数

    1.TPS:每秒处理的事务数,jmeter的Throughput为吞吐率(请求数/秒),在加了事务控制器后,TPS=Throughput

    宏观上:TPS=并发数/响应时间,jmeter的Throughput = (number of requests) / (total time) ,即

    Throughput =(sample样本数)/(最后一个线程启动的时间+最后一个线程持续的时间-第一个线程启动的时间)

    可以这样理解这个公式:绝对的并发是不存在的,请求发出的时间总有先后,绝对的TPS也是无法计算的,统计的角度看,服务器处理请求总数/花费的时间即是TPS,这也是

    为什么需要不断增大用户数来寻找服务器的最大TPS的原因

    2.平均响应时间=所有sample样本响应时间和/样本个数

     误区:

    TPS=请求数/RT   (RT是所有事物的平均时间) 

    此TPS的计算公式是错误的

    数学公式法:

        TPS= (number of requests) / (total time)       --------公式1     TPS的定义公式

      TPS=1/RT * 请求数 = 样本个数2/所有sample样本响应时间和   -----------公式2 带入公式  平均响应时间=所有sample样本响应时间和/样本个数

        假设公式2等于公式1 ,则 

        (number of requests) / (total time) = 样本个数2/所有sample样本响应时间和  

        即:

        1/ (total time)  =  样本个数 / 所有sample样本响应时间和 

        显然等式两边不成立,假设不成立

        另:number of requests 是等于 样本个数  等于  请求数

    场景分析法:

        场景1,A应用是单线程处理,处理一个请求需要1s,5个VU去请求一次,第一个请求花费了1s,第二个花了2s...第五个花了5s,5个请求总耗时5秒,5个请求响应时间的总和是(5+4+3+2+1)=15 s,总请求数是5,所以A系统的TPS = 5/5 = 1,平均响应时间是(5+4+3+2+1)/5=3s,此时若按照TPS=1/RT*请求数  计算,则TPS=1/3 * 5 = 5/3 , 显然是不对的

        场景2,当去请求多个事物时,此时这个公式是明显错误的

    参考:

    http://www.i3geek.com/archives/1165

    http://jmeter.apache.org/usermanual/glossary.html#Throughput

    http://yhz61010.iteye.com/blog/1735874

    http://www.cnblogs.com/ceshixuexi/p/7116683.html

  • 相关阅读:
    oracle数据库导出与导入
    Mysql导入表信息[Err] 1067
    Golang--不定参数类型
    (转)Docker容器的重启策略及docker run的--restart选项详解
    (转)Golang--使用iota(常量计数器)
    Golang--匿名变量
    Golang--Hello World
    Ubuntu Server16.04 配置网卡
    U盘安装ubuntu 16.04 遇到 gfxboot.c32:not a COM32R image boot 的解决方法
    ipfs私链服务
  • 原文地址:https://www.cnblogs.com/xianlai-huang/p/7795215.html
Copyright © 2020-2023  润新知