V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
likefly
V2EX  ›  程序员

TPS 是怎么计算的?

  •  
  •   likefly · 2019-12-10 11:26:34 +08:00 · 7160 次点击
    这是一个创建于 1570 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网上每个文章写的都不一样,看晕了

    23 条回复    2019-12-11 20:39:34 +08:00
    likefly
        1
    likefly  
    OP
       2019-12-10 11:28:33 +08:00
    例如我现在压测并发 50,持续时间 10 分钟,执行了 64952 个请求,平均响应时间 461.59ms
    likefly
        2
    likefly  
    OP
       2019-12-10 11:34:54 +08:00
    我的理解是这样的,单个用户访问 1 秒,按平均响应时间来看,可以处理的事物数就是 1/0.461.59=2.166 。
    并发 50 就是 50*2.166=108.3。
    但是网上搜了都是说一大篇,各种不一样,有没有大佬来指点一下
    likefly
        3
    likefly  
    OP
       2019-12-10 11:37:16 +08:00
    或者是 64952 / 300 秒
    lhx2008
        4
    lhx2008  
       2019-12-10 11:40:05 +08:00 via Android   ❤️ 1
    一般就是写请求是 TPS,读请求是 QPS,然后是请求数 /总时间秒
    lhx2008
        5
    lhx2008  
       2019-12-10 11:42:16 +08:00 via Android
    平均响应时间的话,要看 95%的线或者 99%的线,有没有超过阈值,超过了可以考虑降低测试并发
    lhx2008
        6
    lhx2008  
       2019-12-10 11:42:55 +08:00 via Android
    最后是在响应时间比较合理的情况下的 QPS 最大值
    lhx2008
        7
    lhx2008  
       2019-12-10 11:43:59 +08:00 via Android
    @likefly #2 2.166 是你服务器是单线程是没错的,但是一般有框架都不会是单线程
    dengtongcai
        8
    dengtongcai  
       2019-12-10 11:45:47 +08:00 via iPhone
    mark 等大佬讲讲
    aleung
        9
    aleung  
       2019-12-10 12:25:26 +08:00 via Android   ❤️ 1
    TPS: transaction per second,不严谨的场合经常等同于 QPS/RPS: request per second。

    根据这个定义,你的测试的结果应该是 64952 /(60*10)
    laimeifeng1995
        10
    laimeifeng1995  
       2019-12-10 14:16:46 +08:00
    TPS 和你并发用户数不一定有太大关系 ,

    TPS = 请求数 /平均响应时间
    likefly
        11
    likefly  
    OP
       2019-12-10 15:14:58 +08:00
    @laimeifeng1995
    根据你的公式,那就是 64952 / 461.59 ?
    opengps
        12
    opengps  
       2019-12-10 15:29:55 +08:00
    兼容软件每秒都统计成功执行的事物数量,最后根据列表,最大最小平均值都拿出来参考下,一般都根据需要选取平均值
    laimeifeng1995
        13
    laimeifeng1995  
       2019-12-10 15:36:18 +08:00
    @likefly 对的,把单位划算为秒就可以了,
    你可以,找一些压测工具,看看他们的结果和这个计算结果是不是一样就知道了。
    1ffree
        14
    1ffree  
       2019-12-10 15:48:34 +08:00
    @laimeifeng1995 你是认真的吗?
    laimeifeng1995
        15
    laimeifeng1995  
       2019-12-10 15:54:30 +08:00
    @1ffree 你啥意思,我说错什么了吗。
    laimeifeng1995
        16
    laimeifeng1995  
       2019-12-10 15:57:51 +08:00
    @likefly 不好意思,刚刚看记错了。

    TPS = 请求数 *平均响应时间
    lhx2008
        17
    lhx2008  
       2019-12-10 16:03:25 +08:00 via Android
    @laimeifeng1995 想一下就知道,请求数是至少和总时间有关系的,你这么算,岂不是我测试时间越长,请求数越多,TPS 越高
    laimeifeng1995
        18
    laimeifeng1995  
       2019-12-10 16:08:37 +08:00   ❤️ 1
    @likefly

    刚刚拿 JMeter 手动测试了下、

    TPS = 总请求数 /请求时间

    Tips:
    我刚刚并发 50 个用户,请求了 30 秒 总请求数 21063 平均响应时间 70ms,TPS=QPS=700.3/sec

    对不起刚刚回复快了,没想清楚。
    laimeifeng1995
        19
    laimeifeng1995  
       2019-12-10 16:09:47 +08:00
    @lhx2008

    对不起,刚刚回复快了,脑子浆糊,挨打就要立正,错误就要认。
    likefly
        20
    likefly  
    OP
       2019-12-10 16:13:35 +08:00
    @laimeifeng1995
    我现在也是按照 总请求数 / 请求时间来算
    laimeifeng1995
        21
    laimeifeng1995  
       2019-12-10 16:20:57 +08:00
    @likefly 这样计算 ,没啥问题。

    TPS 或者说 QPS,这种吞吐量是一个浮动值。和并发用户数没啥太大关系。

    如果想测出最大 TPS 值,需要多几组数据对比才行。
    kid1412621
        22
    kid1412621  
       2019-12-11 00:00:41 +08:00   ❤️ 1
    记得皓哥说过,不要看平均数,要看中值数
    pythonee
        23
    pythonee  
       2019-12-11 20:39:34 +08:00
    只知道性能测试是个专业活,有采样、统计的学问,还要避免引入干扰因素
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1086 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:46 · PVG 06:46 · LAX 15:46 · JFK 18:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.