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