网关观测以及系统关键指标
在对一个系统进行可用性评估时,不能简单地用好或者坏去衡量,得有一些可量化的指标。有了这些指标才能继续对系统针对性优化。
整个系统架构中,不同的功能层会有多种不同的衡量指标,比如针对延迟的 TTFB,针对业务的 TPS,消息系统中的 失败处理数等等,笔者在这里抽出较关键且影响较大的指标,以供读者参考。
RTT延迟
往返时间 (RTT) 是客户端发送请求并从服务器接收响应所需的时间, 网络延迟会导致RTT增大。但是要注意因为网络数据转发是动态的,路径也会发生变化,RTT并不能绝对说明问题。
TTFB 首字节时间
TTFB (Time To First Byte) 是记录建立连接后首字节数据从服务器到达客户端所需的时间。TTFB 取决于两个关键因素:
- 后端业务处理请求所需的时间
- 网络请求以及响应返回到客户端所需的时间
因此,TTFB 是衡量业务处理时间和网络滞后重要指标。是网络传输优化以及后端业务优化的参考核心依据。
QPS 每秒请求数
QPS 是指服务器1s 能处理的接口请求数。一般用来衡量接口最大性能指标,从而计算出相应的横向扩展服务数量。
测量 QPS 需要注意几个问题
- 预测 流量高峰阶段的 请求数。基于二八原则,绝大部分的请求都是 20%的时间段产生的。
- 使用 wrk 或者 ab 测试接口 QPS,注意系统局部性原理,生产环境中 会有大量请求穿透缓存的影响。
- 在使用 wrk等工具测试并发时,要注意 Latency 指标,在合理的Latency范围内,QPS的测试才有意义。
TPS 每秒事务数
事务是一个完整的事件处理请求。
比如一个 支付请求,内部可能有鉴权服务处理,支付业务处理。那么这个支付事件的 TPS = min(鉴权QPS,支付业务QPS)
网络吞吐率
吞吐率 表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)。吞吐量受带宽限制,网络的使用率 = 吞吐量 / 带宽。
一般而言网络吞吐率在视频类或者CDN类服务是重要的参考指标。
总结
有了指标之后,就要对系统进行性能优化以及可用性保障工作。
为了客观合理地评估优化测试和效果,首先应该明确优化的标准,即要对系统和应用程序进行基准测试,得到各层的基准性能。
在进行基准测试时,我们就可以按照协议栈的每一层来测试。由于底层是其上方各层的基础,底层性能也就决定了高层性能。
比如在网络层 对于两端的路由情况,我们可以使用MTR
来探测路由。在传输层可以使用 iperf
或 netperf
,来测试传输层的性能,再到应用层,用 wrk
、ab
等工具,来测试应用程序的性能。