【软件测试】再读《性能之巅》学习心得
临近双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分析工具
内存分析工具
文件系统分析工具
磁盘分析工具
| 网络分析工具
其中十二十三章来说,作为性能测试人员来说,还是值得仔细研读,其中解决问题的方式值得我们思考和借鉴。
以上是 【软件测试】再读《性能之巅》学习心得 的全部内容, 来源链接: utcz.com/a/131520.html