第七周学习总结

发布于: 4 小时前

本周学习了性能测试、操作系统、文件与硬盘IO

性能测试

是性能优化的前提和基础,也是性能优化的检查和度量标准。

网站性能测试的主要指标有响应时间,并发数,吞吐量,性能计数器。

响应时间直接反应的系统响应的快慢。并发数反应了系统的负载特性。吞吐量体现系统处理能力,TPS、HPS、QPS。性能计数器,包括system load、对象与线程数、内存使用、cpu使用、磁盘和网络IO等。

性能测试方法:性能测试、负载测试、压力测试、稳定性测试。

性能测试,设计初期的性能指标为预期目标,对系统不断施压,验证系统在资源范围内,是否可达到预期。

负载测试,对系统不断增加并发,直到系统某项或多项指标达到安全临界值,继续施压时系统处理能力会逐渐下降。

压力测试,超过安全负载时,继续对系统施压,直到系统崩溃,以得到系统的最大承受能力。

稳定性测试,特定条件下,给系统加载一定业务压力,使系统较长时间去运行,检测系统稳定性。

性能测试TPS曲线图成抛物线,预期范围内成较快上升趋势,超过最佳运行区间,响应时间越来越久,即负载测试成缓慢上升趋势,当达到系统最大负载点时,即将进入压力测试区间,这时响应时间成指数级上涨,直到系统奔溃,响应时间无限长。

操作系统

程序运行起来便是进程。代码从磁盘加载到内存,交给从cpu执行。

进程状态:就绪-获取到除cpu以外的所有资源,等待cpu执行。运行-在cpu上运行。阻塞-等待某一事件发生,即使获取到cpu资源也无法执行。

进程有基本的内存空间,所有线程可共享进程内存。线程也有自己的内存空间,其他线程不能访问。

java web应用运行时的系统结构:物理无服务>操作系统>JVM进程>tomcat容器>应用程序>用户线程

多线程存在线程安全问题,保证线程安全通过锁,但是锁会引起阻塞,出现死锁就有可能使系统资源无法及时释放而造成系统崩溃。

避免阻塞引起的崩溃,可以通过限流、降级、异步IO。

锁CAS(V,E,N) V表示要更新的变量,E表示预期值,N表示新值。如果V=E则将V设置成N,否则不做操作。

Java中加锁,偏向锁,代码被线程执行时,该线程自动获取到锁。轻量级锁,当锁是偏向锁时,又被另一个线程访问,锁变成轻量级锁,其他线程以自旋形式获取锁,不会阻塞。当锁是轻量级锁,等待线程不会无限自旋下去,超过一定次数,锁就会膨胀为重量级锁,此时其他线程限于阻塞状态,处理性能降低。

多cpu下的锁,总线锁和缓存锁。总线锁,此时只允许一个处理器占用内存。缓存锁,阻止两个以上处理器对缓存的内存区域数据进行修改。

还有公平锁和非公平锁,可重入锁、独享锁、共享锁、读写锁、乐观锁、悲观锁、分段锁、自旋锁。

文件与硬盘IO

目前常用硬盘:机械硬盘、固态硬盘。

数据存储结构:B+树、LSM树。

文件控制块,文件系统将硬盘以块为单位来进行划分,每个文件占据若干块,然后通过FBC记录每个文件占用的硬盘数据块。

RAID独立硬盘冗余阵列

分布式文件系统HDFS

用户头像

潜默闻雨

关注

还未添加个人签名 2018.11.23 加入

还未添加个人简介

评论

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