Week7
性能测试
概念:性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。
分两个视角
主观视角:用户感受到的性能
客观视角:性能指标衡量性能
性能测试指标
4大类:
响应时间:应用系统从发出请求到收到最后响应数据所需要的时间。直观的反映出系统的“快慢”
并发数:服务器中正在处理的请求。反映了系统的负载特性。对于网站而言,并发数,即系统并发用户数,指同时提交请求的用户数目。对应还有在线用户数(当前系统登录的用户数)和系统用户数(可能访问系统的总用户数)。
吞吐量:单位时间内系统处理的请求数量。对于网站可以使用“请求数/秒”、“页面数/秒”、“访问人数/天”、“处理的业务数/小时”等来衡量。常用的还是请求数/秒。TPS(每秒事务数)、HPS(每秒HTTP请求数)、QPS(每秒查询数)也是吞吐量指标。(TPS说的是泛事务,一次请求,一次查询都算一个事物)
吞吐量=(1000/响应时间ms)*并发数
性能计数器:描述服务器或操作系统性能的一些数据指标。包括System load,对象与线程数、内存使用、CPU使用、硬盘与网络IO指标等。这些指标也是系统性能的重要参数。系统性能指标发生异常时,可以及时向运维人员报警。
System Load是什么?
Load Avg就是这里说的System Load。这里的数字表示正在处理的进程数(线程数)与等待处理的进程数(线程数)之和。上面的三个数字表示5分钟,10分钟,15分钟的系统处理任务的负载。参考上面截图的数据,当前负载为2.60。本机为6核的mbp。所以,当前系统负载处在比较低的状态。至少有3颗CPU是没有任务处理的。如果System Load等于系统CPU核数。说明所有任务都在被CPU执行,并且没有任务等待。说明系统是处在效率最高的状态,没有空闲,也没有过载。
性能测试方法
性能测试需要寻找的三个点:正常情况下正常服务的点、负载增高后系统的顶点、继续增加压力系统的崩溃点
性能测试、负载测试、压力测试、稳定性测试
性能测试:以系统设计初期规划的性能指标为预期目标。对系统不断施加压力,验证系统在资源可接受范围内,是否达到预期目标。
负载测试:对系统不断增加压力,直到系统某项指标或多项指标达到临界安全值。这时候继续对系统提高压力,这时系统的处理能力开始下降。
压力测试:超过安全负载的情况下,对系统继续施加压力,直到崩溃,不能再处理任何请求。以此获得系统最大压力承受能力。
稳定性测试:被测试系统在特定硬件、软件、网络环境下,给系统增加压力,较长时间运行一段时间,测试系统是否稳定。(其实就是在模拟生产环境,并发量会突然上升,突然下降。并不是线性的。线性测试,会导致数据始终在缓存内。突然上升的压力,很可能会因为缓存数据的过期而把系统压垮。)
flower重构前后的差异:
flower重构前,因为一个微服务的慢查询,导致某一个微服务占用了所有大量线程等待响应,拖垮了其它服务,导致系统雪崩。flower重构后,使用了响应式编程,akka的事件传递机制。同样是一个慢查询,只会拖垮他自己,不会波及其它微服务。不会导致系统雪崩。
性能优化
你不能优化一个没有测试的软件
你不能优化一个你不了解的软件
性能测试主要指标:
响应时间、并发数、吞吐量、性能计数器
性能优化的一般方法:
1.性能测试,获得性能指标
2.指标分析,发现性能与资源瓶颈点
3.架构与代码分析,寻找性能与资源瓶颈关键所在
4.架构与代码优化,优化关键技术点,平衡资源利用
5.性能测试,进入性能优化闭环
.....本周内容尚未总结完毕,需要继续添加后续。没时间了,先交作业。
评论