mirror of
https://github.com/zhwei820/learn.lianglianglee.com.git
synced 2025-11-19 15:43:44 +08:00
fix img
This commit is contained in:
@@ -191,14 +191,14 @@ function hide_canvas() {
|
||||
<p>在明确了业务场景之后,你还要关注系统的性能指标主要有吞吐量、延迟以及 TP。</p>
|
||||
<h3>案例分析</h3>
|
||||
<p>我们在拿到产品经理的 PRD 文档时,心里就会清楚要关心哪些系统性能指标,因为需求文档中会描述同时支持多少人在线访问,你也可以借此估算出系统的并发用户数。一般来讲,系统建立的会话数量就是用户同时访问系统的数量。你也可以通过公式,估算出系统的吞吐量(throughput)和延迟(latency)。</p>
|
||||
<p><img src="assets/CioPOWA2H8qAC-PfAAAEsxBVbwY511.png" alt="Drawing 0.png" /></p>
|
||||
<p><img src="assets/CioPOWA2H8qAC-PfAAAEsxBVbwY511.png" alt="png" /></p>
|
||||
<p>延迟和吞吐量,是衡量软件系统最常见的两个指标。</p>
|
||||
<ul>
|
||||
<li><strong>吞吐量</strong>(系统处理请求的速率):反映单位时间内处理请求的能力(单位一般是TPS或QPS)。</li>
|
||||
<li><strong>延迟</strong>(响应时间):从客户端发送请求到接收响应的时间(单位一般是ms、s)。</li>
|
||||
</ul>
|
||||
<p>一般来说,<strong>延迟和吞吐量既互斥,又不绝对的互斥</strong>,你可以通过性能压测分别绘制吞吐量和延迟的曲线图:</p>
|
||||
<p><img src="assets/Cgp9HWA2_ZuAHdfgAAA1WOvYXBI512.png" alt="image" /></p>
|
||||
<p><img src="assets/Cgp9HWA2_ZuAHdfgAAA1WOvYXBI512.png" alt="png" /></p>
|
||||
<p>延迟总是非递减的曲线,开始时表现比较平稳,到了某一个特定值后,会迅速增大。而吞吐量曲线在开始时迅速增加,到达峰值后逐渐减小。</p>
|
||||
<p>总体来看,随着压力增大,单位时间内系统被访问的次数增加。结合延迟和吞吐量观察的话,吞吐量曲线的最高点,往往是延迟曲线最低偏后的一个时间点,这意味着延迟已经开始增大一段时间了。那么<strong>对一些延迟要求比较高的系统来说,系统优化性能指标是要找到延迟趋向最低和吞吐量趋向最高的点</strong>。</p>
|
||||
<p>从图中你也可以看出,如果不做流量控制,在系统压力不断增大后,系统便什么也做不成。这也是一些不够健壮的系统,在压力较大的特殊业务场景下(比如一元秒杀、抢购、瞬时流量非常大的系统),直接崩溃,对所有用户拒绝服务的原因。</p>
|
||||
@@ -208,12 +208,12 @@ function hide_canvas() {
|
||||
<li><strong>计算 TP 指标:</strong> 比如 TP 99,把一段时间内所有请求的响应时间,从小到大进行排序,然后取 99% 对应的请求的响应时间,即为 TP99 的值。</li>
|
||||
<li><strong>TP指标相比于性能均值的意义:</strong> 为什么要用 TP 99 这样的比例方式,而不直接用平均数来定义性能呢?这是为了更符合实际系统的情况。</li>
|
||||
</ul>
|
||||
<p>举个例子,比如在一个系统的 100 个请求中,99 个都在 1 s 左右返回,剩下 1 个 100s 还不返回,如果计算平均时间,就是<img src="assets/CioPOWA2IE-AQq34AAAFrvhSBV4194.png" alt="Drawing 2.png" />,无法反映系统的真实情况。因为耗时 100 s 的请求也许是异常请求,正常请求的平均时间仍是 1 秒,而 TP99 就比较能反映真实情况,因为 TP99 就可以达到 1 秒。</p>
|
||||
<p>举个例子,比如在一个系统的 100 个请求中,99 个都在 1 s 左右返回,剩下 1 个 100s 还不返回,如果计算平均时间,就是<img src="assets/CioPOWA2IE-AQq34AAAFrvhSBV4194.png" alt="png" />,无法反映系统的真实情况。因为耗时 100 s 的请求也许是异常请求,正常请求的平均时间仍是 1 秒,而 TP99 就比较能反映真实情况,因为 TP99 就可以达到 1 秒。</p>
|
||||
<p>对初中级研发工程师来说,回答“吞吐率、延迟、TP 99(TP 99 比较有代表性)”这三个指标就够了,但如果你应聘高级研发工程师,还要站在系统全链路的角度上思考问题,从端到端的角度思考系统的性能指标(也就是从架构师的视角分析系统)。</p>
|
||||
<h3>案例解答</h3>
|
||||
<h4>用架构师的视角分析系统性能指标</h4>
|
||||
<p>架构师视角说白了就是系统的全链路视角,我们从前端请求流程开始,来讲解一次请求链路会涉及哪些前后端性能指标。</p>
|
||||
<p><img src="assets/Cgp9HWA2_bWARBegAABGgCuF23Q624.png" alt="image" /></p>
|
||||
<p><img src="assets/Cgp9HWA2_bWARBegAABGgCuF23Q624.png" alt="png" /></p>
|
||||
<p>一次请求链路</p>
|
||||
<p><strong>步骤一:DNS解析</strong></p>
|
||||
<p>用户在浏览器输入 URL 按回车,请求会进行 DNS 查找,浏览器通过 DNS 解析查到域名映射的IP 地址,查找成功后,浏览器会和该 IP 地址建立连接。对应的性能指标为:<strong>DNS解析时间</strong>。</p>
|
||||
|
||||
Reference in New Issue
Block a user