跳转至

性能指标

20211125164557

  • 时间指标:接口响应时间、业务响应时间
  • 容量指标:接口容量、业务容量
  • 资源利用率指标
    • 操作系统(CPU、IO、Memory、Disk、Network、System)
    • JVM(GC、Classes)

指标关系

经典示意图

其实不太符合实际,出处:某白皮书·第18页

20211125165501

三条曲线
    利用率 Utilization(绿色)
    吞吐量 Throughput(紫色)
    响应时间 Response Time(蓝色)
三个区域
    轻负载区(Light Load)
    重负载区(Heavy Load)
    塌陷区(Buckle Zone)
两个点
    最优并发用户数(The Optimum Number of Concurrent Users)
    最大并发用户数(The Maximum Number of Concurrent Users)
三个状态描述
    资源饱和(Resource Saturated)
    吞吐下降(Throughput Falling)
    用户受影响(End Users Effected)

比较合理的一张示意图(蓝线:TPS,黄线:RT)

20220808153704

RT

单位通常为 ms,1s=1000ms

最大、最小、平均

响应时间的拆分和定位,是非常重要的一个环节

20230830150131

TPS

TPS 可以反应出一个系统处理事务的能力

事务就是统计了一段脚本的执行时间,在不同的行业不同业务中定义的粒度是不同的

通常我们所说的并发,指的都是相对并发,即一个时间段内发生的事情,而不是同一时刻的绝对并发(这其实叫并行),并行其实是没什么意义的,提到并发就默认理解为相对并发即可。

而且并发指的是并发用户数,而不是并发线程

20230829173949

示意图中,有 4 个并发线程,每个线程 1 秒内可完成 4 个事务,所以总 TPS 是 16,即并发数是 16

TPS 不仅取决于线程数,还受到事务的复杂性、响应时间、系统资源以及其他外部因素(如网络延迟)的影响。

估算在线用户数

技术指标不能脱离业务指标,在设置技术指标前需要先弄清楚业务指标,比如:1000 万在线用户

通常我们会把一些数据放到 Redis 这样的缓存服务器中,所以想知道在线的最大的用户数是多少,直接拿缓存的内存来算就可以了

  • PV(Page View) 页面浏览量,指用户每次访问网站时所查看的页面总数,反映了用户在网站上的活跃程度
  • VV(Visit View) 访问次数(每次访问多个页面也算一次),用于衡量用户对网站的粘性和回访频率,可以了解用户的忠诚度
  • UV(Unique Visitor) 独立访问用户数,通过 IP 和 Cookie 判断
    • UV < IP 可能是同一用户不同时间使用动态IP访问
    • UV > IP 可能是公司学校网吧等公用IP访问

比如某人上午访问了某网站2个页面,下午又访问了3个页面,则:PV=5, VV=2, UV=1

估算并发用户数和线程数

涉及到用户数,通常要分析并发度,一般业务中,并发度都会低于 5%,甚至低于 1%

假设 10000 个在线用户,并发度为 1%,则并发用户数为:\(10000 * 0.01 = 100\)

20240809000427

即总 TPS 为 100,如果有 5 个线程,则每个线程产生 20TPS

\(平均响应时间 = 1000ms / 20TPS = 50ms\)

没啥人用的服务:TPS 20 / RT 300ms
后台服务:TPS 20 / RT 200ms
十万到百万级的服务:TPS 50 / RT 200ms
秒杀类短时间高并发服务:TPS 100~200 / RT 100ms

所以知道平均响应时间的情况下,就可以估算出并发用户数

\(并发用户数 = (1000ms/平均响应时间ms) * 线程数\)

20230829174458

平均响应时间若为 100ms,则达到 500TPS 需要的并发线程数为:\(500TPS / (1000ms/100ms) = 50\)

Load Average

可使用 uptime 命令查看,结果其实就是 top 命令返回的第一行信息

平均负载,指单位时间内处于可运⾏状态和不可中断状态的进程数,负载过⾼可能会导致进程响应变慢进⽽影响服务的正常功能

  • 可运⾏状态的进程(R):正在使⽤CPU的进程(Running)、正在等待CPU的进程(Runnable)
  • 不可中断状态的进程(D):正在等待I/O的进程(Disk Sleep),这些进程正在与硬件进⾏不允许中断的交互(系统保护)

网络指标

带宽 bandwidth

指单位时间内信道理论上能传输的最大数据量

  • 电气领域:指的是模拟带宽,单位:Hz(赫兹)
  • 计算机领域:指的是数字带宽,单位:bps(比特率) 或 Bps(字节率)

    十进制:用K、M、G等表示,1K=1000,比如1Kbps,表示1000比特每秒
    二进制:用Ki、Mi、Gi等表示,1Ki=1024,比如1KiBps,表示1024字节每秒

全双工系统的带宽是半双工系统的两倍

吞吐量 Throughput

指单位时间内信道实际能传输的数据量

\(Throughput = TPS * m\)

信息传输速率限制

香农公式指出了信息的传输速率上限,信道的带宽或信道中的信噪比越大,上限就越高

在带宽不变,信噪比不能再提高后,若想提高信息传输速率,可以用编码的方法让每个码元携带更多的信息

码元传输速率限制

在任何信道中,码元传输的速率是有上限的,传输速率超过此上限,就会出现严重的码间串扰的问题,使接收端对码元的判别成为不可能

信噪比

随机产生的噪声存在于所有的电子设备和通信信道中

\(信噪比(dB,分贝) = 信号的平均功率(S) / 噪声的平均功率(N)\)

时延 delay

存储转发的过程中,虽然计算机自动处理,但也仍然避免不了会有一定的时延

  • 发送时延
  • 传播时延
  • 处理时延
  • 排队时延
  • 往返时延:RTT(Round Trip Time)双向交互一次的时间

利用率

  • 信道利用率,有数据通过的时间占比,并非越高越好
  • 网络利用率,全网信道利用率的加权平均值