架构第七周 - 学习总结

用户头像
Jeff.Spring
关注
发布于: 2020 年 07 月 19 日
架构第七周 - 学习总结

第七周主要内容为性能测试与优化、OS与FS。

性能测试是对系统性能进行测试,是性能优化的前提和基础,也是性能优化结果的检查和衡量标准。

不同视角下性能有不同的优化手段和不同标准。比如:

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

  • 客观视角:性能指标衡量的性能。



性能测试主要的指标

  • 响应时间

发出请求到接收到最后响应数据经历的时间。

  • 并发数

系统能同时处理的请求的数目,对网站而言,并发数就是系统并发用户数,也就是同时提交请求的用户数。

  • 吞吐量

单位时间内系统处理的请求数量,单位时间可以是天、hour、min、second等,一般以秒为单位,如TPS每秒事务数、QPS每秒查询数、HPQ每秒请求数。

比如:并发数为1时,响应时间100ms,则吞吐量就是10,表示一个并发数可以发10次请求。



  • 性能计数器

除了响应时间、并发数、吞吐量三个主要指标外,还有一个辅助指标,就是性能计数器。

描述的是服务器或OS性能的一些数据指标,比如System Load、内存占用率、磁盘IO等。



什么是SYSTEM LOAD?

其实表示当前正在cpu中执行的线程数和等待被CPU执行的线程数之和。Linux的Top可以看到Load avg。表示最近5min、10min、15min的system load平均值。理想值为系统CPU的核心数。如果值小于cpu核心数则表示cpu空闲。若值大于cpu核心,比如双核的cpu服务器中load avg等于3则表示cpu中有2个线程在执行,一个线程在等待,系统略微过载。



性能测试细分

性能测试是一个总称,可以细化为性能测试、负载测试、压力测试、稳定性测试。



性能测试

以性能设计初期规划的性能指标为预期目标,对系统施加压力,验证系统在资源可以接受范围之内是否可以达到性能预期



负载测试

对系统不断增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值,比如某种资源呈现饱和态,继续施压,系统性能指标不升反降



压力测试

在超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统的最大压力承受能力



稳定性测试

被测试系统在特定软硬件、网络系统下,给系统加载一定的业务压力,使得系统运行一段较长时间,以此检测系统是否稳定。稳定性测试应该以波浪形不均匀的压力测试进行,更加贴合生产环境。



OS与FS

  • java语言是通过CAS原语在对象头中修改mark word实现的加锁,加锁过程会导致锁膨胀,这是由JVM自己控制的。

  • RAID独立硬盘冗余阵列:增强可靠性,提升并发读写性能。



心得体会

  • 经过学习,对性能测试的主要关注点有了清晰的了解,以后在进行压测的时候更加有针对性了。

  • 拓展了知识面,对Java语言虚拟机底层的锁机制、RAID磁盘阵列等概念有了了解,对actor这种异步反应式编程有了了解,虽然akka并没有形成最佳实践。



发布于: 2020 年 07 月 19 日 阅读数: 38
用户头像

Jeff.Spring

关注

努力支撑经历,经历支撑能力! 2018.12.03 加入

追不上BAT的人... 分享,聚焦

评论

发布
暂无评论
架构第七周 - 学习总结