再读《性能之巅》学习心得

2019-10-30   出处:MiniStarClub北京  作/译者:土司阿哈  

临近双11又开始另一轮的性能测试,陆续给大家奉上性能测试系列篇,从性能测试理论、性能测试案例高延迟(响应时间长)、CPU问题、内存问题、线上问题实战和性能测试书籍推荐等篇章。更多性能文章见文末链接

前几天陆陆续续的写了四五篇性能相关的文章,有不少同学让推荐性能测试的书籍,今天就推荐一本我认为非常棒的书《性能之巅》。 前段时间再次花了几天时间快速的阅读下《性能之巅》,感觉受益匪浅,作者本身有很强的逻辑思维能力和实战经验; 该书不论对于初学者还是有一定工作经验的工程师来说,都值得一看。

- 1 - 

本书基本逻辑架构层次


本书主要主要从性能问题产生的应用程序、cpu、内存、文件系统、磁盘、网络六个知识领域,按照普通人解决问题的思维方,2W1H("是什么?">"为什么?">"怎么做?")的角度来分析问题解决问题。使得本书的阅读变得有很强的逻辑性。

书中对于基本概念介绍相对比较多,统一概念,便于阅读者更好的阅读本身,这一点很赞。

- 2 - 

基础知识和分析方法(一到三章)

前三章主要讲解系统基础知识和一些分析方法

街灯讹方法

在熟悉的工具或流程中试错,比较盲目。

Ad Hoc核对清单法

    保证所有人知道如何检查最糟糕的问题,覆盖全面,但必须保持清单及时更新

诊断循环

    假设–仪器检验–数据–假设

USE方法

本书重点方法,对于所有资源,查看它的使用率、饱和度、错误

当然方法还有很多,限于篇幅在此只说明其中几种方法。

- 4 - 

观测工具(第四章)

本书第四章主要讲解观测工具,性能观测工具可以按照系统级别和进程级别来分类,多数的工具要么基于计数器要么基于跟踪:

计数器

内核维护了各种统计数据,称为计数器,用于对事件计数。通常计数器实现为无符号的整型数,发生事件时递增。

系统级别的计数器有:

vmstat: 虚拟内存和物理内存的统计,系统级别

mpstat: 每个 CPU 的使用情况

iostat: 每个磁盘 I/O 的使用情况,由块设备接口报告

netstat: 网络接口的统计,TCP/IP 栈的统计,以及每个连接的一些统计信息

sar: 各种各样的统计,能归档历史数据

进程级别:

ps: 进程状态,显示进程的各种统计信息,包括内存和 CPU 的使用

top: 按一个统计数据排序,显示排名高的进程

pmap: 将进程的内存段和使用统计一起列出

一般来说,上述这些工具是从 /proc 文件系统里读取统计信息的

跟踪

跟踪收集每一个事件的数据以供分析。跟踪框架一般默认是不启用的,因为跟踪捕获数据会有 CPU 开销,另外还需要不小的存储空间来存放数据。

系统级别:

tcpdump: 网络包跟踪(libpcap lib)

blktrace: 块 I/O 跟踪

DTrace: 跟踪内核的内部活动和所有资源的使用情况,支持静态和动态的跟踪

SystemTap: 同上

perf: Linux 性能事件,跟踪静态和动态的指针

进程级别:

strace: 系统调用跟踪

gbd: 源码级别的调试器

- 4 - 

应用系统(第五章)

本书的第五章主要讲解应用相关知识,性能调整离工作所执行的地方越近越好:最好在应用程序里,包括 Web 服务器、应用服务器、负载均衡器、文件服务器,等等。

设立性能目标能为你的性能分析工作指明方向,并帮助你选择要做的事情。没有清晰的目标,性能分析容易沦为随机的『钓鱼探险』。

常见目标:

延时

吞吐量

资源使用率

应用程序性能技术:选择 I/O 尺寸、缓存、缓冲区、轮训(epoll)、并发和并行、非阻塞 I/O、处理器绑定

编程语言相关:编译语言使用编译器优化、解释语言一般不是首选、虚拟机、垃圾回收

- 5 - 

资源监控(六到十章)

本身六到十章主要讲了cpu、内存、文件系统、磁盘、网络等知识,原理的知识讲的相对较少,但作为一个知识索引对阅读帮助非常大,需要了解更深层的东西需要参考其他书籍。

CPU分析工具


 内存分析工具

文件系统分析工具

 磁盘分析工具

网络分析工具

其中十二十三章来说,作为性能测试人员来说,还是值得仔细研读,其中解决问题的方式值得我们思考和借鉴。


欢迎给测试窝投稿或参与内容翻译工作,请邮件至editors@testwo.com。也欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,并与我们的编辑和其他窝友交流。
141°|1415 人阅读|0 条评论

登录 后发表评论