《软件性能测试分析与调优实践之路》(第2版) 是清华大学出版社出版的一本图书,作者为张永清,全书共分为9章,如下图所示
图书介绍:《软件性能测试分析与调优实践之路》(第2版)
1、为什么需要性能测试与分析
1)、了解系统的各项性能指标,通过性能压测来了解系统能承受多大的并发访问量、系统的平均响应时间是多少、系统的TPS是多少等。
2)、发现系统中存在的性能问题,常见的性能问题如下:
- 系统中是否存在负载均衡不均的情况。负载均衡不均匀一般指的是在并发的情况下,每台服务器接收的并发压力不均匀,从而导致部分服务器因为压力过大而出现性能急剧下降,以及部分服务器因为并发过小而出现资源浪费的情况。
- 系统中是否存在内存泄漏问题。内存泄漏是指应用程序代码在每次执行完后,不会主动释放内存资源而导致内存使用一直增加,最终会使服务器物理内存全部耗光,程序运行逐渐变慢,最终因为无法申请到内存而退出运行。内存泄漏多数情况下是非常缓慢的增加,不容易被发现,一般需要通过高并发性能压测才能暴露。
- 系统中是否存在连接泄漏问题。连接泄漏种类非常广泛,可以是数据库连接泄漏、HTTP连接泄漏或者其他的TCP/UDP连接泄漏等。除了系统实际情况需要建立长连接外,一般短连接都应该是用完就需要关闭和释放。
- 系统中是否存在线程安全问题。线程安全问题是在高并发访问的多线程处理系统中经常会出现的问题,如果系统中存在线程安全问题,就会出现多个线程先后更改数据,造成所得到的数据全部是脏数据,有时候甚至会造成巨大的经济损失。
- 系统中是否存在死锁问题。死锁问题也是多线程系统中经常会遇到的一个经典问题,一般常见的有系统死锁、数据库死锁等。
- 系统中是否存在网络架构或者应用架构扩展性问题。扩展性问题一般是指在性能指标无法满足预期的情况下,通过横向或者纵向扩展硬件资源后,系统性能指标无法按照一定的线性规律进行快速递增。
- 发现系统的性能瓶颈在何处。性能瓶颈一般是指因为某些因素而造成系统的性能无法持续上升。
3)解决性能压测中存在的问题和性能瓶颈,通过不断的性能调优,使得系统可以满足预期的性能指标。
2、性能分析与调优实践(流程)
《软件性能测试分析与调优实践之路》(第2版) 一书中总结如下:
3、性能分析与调优实践(调优模型)
《软件性能测试分析与调优实践之路》(第2版) 一书中总结如下:
4、性能分析与调优实践(分层分析)
下图展示了《软件性能测试分析与调优实践之路》(第2版) 一书中如何从上到下或者从下到上来分层分析性能问题
5、性能分析与调优实践(推理论证)
下图展示了如何通过推理论证的方式来分析性能问题
6、常见的性能调优方式:
1)、性能分析与调优实践(缓存调优)
《软件性能测试分析与调优实践之路》(第2版) 一书中详细论证了如何来解决如下缓存中面临的问题:
- (1)如何让缓存的命中率更高?
- (2)如何注意防止缓存穿透?
- (3)如何控制好缓存的失效时间和失效策略?
- (4)如何做好缓存的监控分析?
- (5)如何防止缓存雪崩?
2)、性能分析与调优实践(同步转异步)
3)、性能分析与调优实践(削峰填谷)
4)、性能分析与调优实践(拆分)
5)、性能分析与调优实践(任务分解与并行计算)
6)、性能分析与调优实践(索引与分库分表)
- 按照冷热数据分离的方式:一般将使用频率较高的数据称为热数据,查询频率较低或者几乎不被查询的数据称为冷数据。冷热数据分离后,热数据单独存储,这样数据量就会下降下来,查询的性能自然也就提升了,而且还可以更方便地单独针对热数据进行I/O性能调优。
- 按照时间维度的方式:比如可以按照实时数据和历史数据分库分表,也可以按照年份、月份等时间区间进行分库分表,目的是尽可能地减少每个库表中的数据量。
- 按照一定的算法计算的方式:此种方式一般适用于数据都是热数据的情况,比如数据无法做冷热分离,所有的数据都经常被查询到,而且数据量又非常大。此时就可以根据数据中的某个字段执行算法(注意:这个字段一般是数据查询时的检索条件字段),使得数据插入后能均匀地落到不同的分表中去(由算法决定每条数据是进入哪个分表),查询时再根据查询条件字段执行同样的算法,就可以快速定位到是需要到哪个分表中去进行数据查询。