架构第七周 - 学习总结
第七周主要内容为性能测试与优化、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并没有形成最佳实践。
版权声明: 本文为 InfoQ 作者【Jeff.Spring】的原创文章。
原文链接:【http://xie.infoq.cn/article/8062b33f98133b33f5dcd4a9c】。文章转载请联系作者。
评论