01《性能工程高手课》学习笔记@性能工程概述
发布于 2022年 01月 24日 00:49
程序媛的生活不止是眼前的代码,还有效率和性能优化。
认识代码性能和系统容量效率。
一、代码性能的主要指标
1. 吞吐量
Throughput
,单位时间处理请求的数量。
2. 服务延迟
Service latency
,客户请求的处理时间。
3. 扩展性
Scalability
,系统在高压的情况下能不能正常处理请求。
4. 资源使用效率
Resource Utilization
,单位请求处理所需要的资源量,如:CPU
、内存等。
5. 可靠性
Reliability
,在极端情况下能不能持续处理正常的服务请求,如:天猫双十一等。
性能好的代码,可以用四个字来概括:“多、快、好、省”。
- 多 》吞吐量大。
- 快 》服务延迟低。
- 好 》扩展性好。
- 省 》资源效率高,资源使用量低。
二、代码性能的重要性
如图所示,代码性能的重要性,不仅仅局限于程序员所直接负责的软件模块,还对其他相关软件模块、模块所在的应用程序、单机系统的设计、互联网服务的质量、公司的运营成本,甚至对我们共同生活的地球都很重要。
单机系统
我们的模块所在的应用程序或微服务,是运行在服务器的硬件和操作系统上的。对这台服务器而言,这就是个单机系统,包括软件和硬件的整个垂直栈:包括
操作系统
、程序库
、存储系统
、CPU
、内存
、网络
等。这些构建都或多或少会影响上层程序的性能。
对下层的软硬件构件越是了解,就越有可能设计出性能优越的模块和应用程序。
三、性能优化的知识和技能
互联网服务的复杂性来源于业务种类的多样、服务质量的要求、不同模块的交互、软硬构件的结合、各个团队的合作等。这意味着,服务性能的优化不仅涉及 结构设计
、代码实现
、容量部署
、运维管理
、效率提升
等各个阶段,也需要员工之间和团队之间的紧密合作
。如此,想要做好这方面的工作,需要有广泛的知识面、广博的实践经验和较高的软技能。
1. 扩展知识面,懂得软硬结合。
- 软件 操作系统、数据结构和算法、编译原理以及各类协议等计算机方面的知识和数学、统计方面的知识。
- 硬件
服务器本身(
CPU
、内存等)、存储系统、各类网络、数据中心等。 - 实践经验 观察系统资源使用率的各种系统命令,各种调试和测试工具,以及如何进行性能分析、优化的实践。
- 软技能 团队协作能力、分享汇报能力。
2. 理论联系实际。
不明显原因导致的性能问题,需要对各种协议
、软件
和 操作系统
、硬件
和 网络
非常熟悉。
3. 测试、分析、优化,有迹可循。
性能测试是一切性能工作的基础和开端。
分析和研究性能测试得到的数据,发现问题并找到问题的根本原因,然后进行性能优化来解决问题。
性能工程师分析问题并且优化性能的总体思路:问题 → 测试 → 分析 → 优化 → 实践
。