Week7

用户头像
关注
发布于: 23 小时前

性能测试

概念:性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。

分两个视角

主观视角:用户感受到的性能

客观视角:性能指标衡量性能

性能测试指标

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.性能测试,进入性能优化闭环



.....本周内容尚未总结完毕,需要继续添加后续。没时间了,先交作业。

用户头像

关注

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
Week7