--- title: 系统高性能架构 date: 2018-07-05 15:11:00 order: 03 categories: - 设计 - 架构 - 综合 tags: - 架构 - 性能 permalink: /pages/bf101e07/ --- # 系统高性能架构 ## 性能简介 要设计高性能的系统架构,应该有以下的思维步骤: 首先,要明确影响性能的因素有哪些?性能的指标有哪些?——做到有的放矢。 其次,要了解如何测试性能指标?性能优化,必须要有前后的效果对比,才能证明性能确实有改善。 接下来,学习针对不同场景下,不同性指标的优化策略以及具体实施方案。——见招拆招。 ### 计算机资源 了解性能指标前,需要先知道哪些计算机资源会影响性能。一般来说,影响性能的计算机资源包括: - **CPU** - **内存** - **磁盘 I/O** - **网络 I/O** - **数据库** - **锁竞争** ### 性能指标 性能测试的主要指标有: - **响应时间** - **并发数** - **吞吐量** - QPS - TPS - **资源分配使用率** #### 响应时间 响应时间(RT)是指从客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结果结束所经历的时间,响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组成。 **响应时间越短,性能越好**,一般一个接口的响应时间是在毫秒级。 响应时间可以进一步细分: - 客户端响应时间 - 网络响应时间 - 服务端响应时间 - 数据库响应时间 #### 并发数 **并发数是指系统能同时处理的请求、事务数**。 系统自身的 CPU 处理能力、内存、以及系统自身的线程复用、锁竞争等都会影响并发数。 #### 吞吐量 吞吐量计算公式: ``` 吞吐量 = 并发数 / 平均响应时间 ``` **吞吐量越大,性能越好**。 一般,系统呈现给外部的最常见的吞吐量指标,就是: - **`QPS(每秒查询数)`** - 即系统每秒可以处理的读请求。 - **`TPS(每秒事务数)`** - 即系统每秒可以处理的写请求。 而在系统内部,存在以下吞吐量: - 磁盘吞吐量 - 体现了磁盘随机读写的性能。 - 网络吞吐量 - 除了受限于网络带宽,CPU 的处理能力、网卡、防火墙、外部接口以及 I/O、系统 IO 算法都会影响到网络吞吐量。 #### 资源分配使用率 通常由 CPU 占用率、内存使用率、磁盘 I/O、网络 I/O 、对象与线程数来表示资源使用率。这些指标也是系统监控的重要参数。 ### 性能测试 性能测试手段: - 性能测试 - 负载测试 - 压力测试 - 稳定性测试 对于 Java 应用而言,最简单的,可以使用 Jmeter 进行性能测试。 性能测试报告示例: