zoukankan      html  css  js  c++  java
  • 性能测试-并发和QPS

    性能测试-并发和QPS

    响应时间:

    cpu计算耗时 + cpu等待耗时 + 网络io耗时 + 磁盘io耗时
    

    并发:

    服务端并发和客户端并发不是同一个概念。客户端并发仅仅是为了模拟多用户访问,服务端并发是同时处理的请求数。从收到客户端的请求到处理完成发出响应,都是属于并发执行的请求。

    客户端并发数不等于服务端并发数。虽然服务端同一时刻执行的线程数等于cpu个数,但是高性能的服务一般是都会使用了异步io;遇到io操作就扔给了操作系统执行,cpu接着干其他的事。所以应用程序同时可以处理多于cpu数目很多的请求。但也不是无限多的。影响并发的系统资源有socket数,带宽紧张程度,内存紧张程度,cpu繁忙程度,磁盘繁忙程度。这些资源共同影响并发数。

    这些资源中有些非常充足比如socket数(普通的服务都是设置了600000, 通过ulimit -n查看),有些就比较匮乏,比如磁盘(具体效率可以去google)。当磁盘遇到瓶颈的时候,socket资源充当了缓冲区。虽然同时能够接受很多请求,但是真正能做出响应的比较少,造成响应时间增加,这种并发没有意义。

    所以,能保证最低响应时间的并发才是有效并发。
    我们在压力测试过程中,不断的增加并发数,如果平均响应时间增加,说明并发能力已经到头了,再加大并发总体性能将要降低。

    上面已经谈及到,并发数可通过多次实验来获得。

    下面在来介绍一个种估算并发数据的方法:

    C=n*L/T
    
    C:并发
    
    n:压测时间段内所有的请求数
    
    L:平均响应时间
    
    T:压测总时长
    
    这里注意:L(平均响应时间)≠ T(总时长)/ n(总请求)
    

    摘自:
    从压测工具谈并发、压力、吞吐量
    Method for Estimating the Number of Concurrent Users

    QPS:每秒请求数,qps是衡量吞吐量指标

    我们在压测工具制作中,一直存在一个争议——吞吐量的计算。
    
    在性能测试中,吞吐量的计算有两种常见的公式:
    
    公式1: 吞吐量=并发数/平均响应时间
    
    公式2: 吞吐量=请求总数/总时长
    
    公式1、2大家应该都接触过,虽然看上去不一样,其实理论上都是ok的。
    
    首先我们可以从C = nL / T 推导:
    
    并发 = 请求总数*平均响应时间 / 总时长
    
    =》并发 / 平均响应时间 = 请求总数 / 总时长
    
    =》公式1 = 公式2
    

    摘自:
    从压测工具谈并发、压力、吞吐量

    性能测试工具

    附上一些性能测试工具,排名不分先后,大家喜欢哪个用哪个。

    hey
    siege
    vegeta
    wrk
    ab

  • 相关阅读:
    pytest-html报告自定义字段
    Python SMTP发送邮件
    IE浏览器兼容测试工具 IETester
    全局ID生成--雪花算法改进版
    全局ID生成--雪花算法
    spring-cloud-sleuth/zipkin
    14.跑批到某个点突然所有批都断批
    13.分布式锁在不同环境引发的坑
    spring-cloud-gateway
    spring-cloud-netflix-config
  • 原文地址:https://www.cnblogs.com/vc60er/p/8597189.html
Copyright © 2011-2022 走看看