第 7 周总结:性能测试,操作系统和文件系统

用户头像
hifly
关注
发布于: 2020 年 07 月 22 日
第7周总结:性能测试,操作系统和文件系统



性能测试



性能测试指标

响应时间

指从应用系统发出请求开始到收到最后响应数据所需要的时间。响应时间时系统最重要的性能指标,直观反映了系统的“快慢”。



并发数

系统能够同时处理请求的数目。对网站而言,并发数即系统并发用户数,指同时提交请求的用户数目。在线用户数(当前登录系统的用户数)和系统用户数(可能访问系统的总用户数)



吞吐量

指单位时间内系统处理的请求的数量,体现系统的处理能力。TPS(每秒事务数)HPS(每秒HTTP请求数)QPS(每秒查询数)吞吐量=(1000/响应时间ms)*并发数



性能计数器

是描述服务器或操作系统性能的一些数据指标。包括System Load,对象与线程数,内存使用,CPU使用,磁盘与网络I/O等指标。



性能测试方法

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



性能测试

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



负载测试

对系统不断增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值,如某种资源已经呈饱和状态,这时候继续对系统施加压力,系统处理能力不但不能提高,反而会下降。



压力测试

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



稳定性测试

被测试系统在特定硬件,软件,网络环境条件下,给系统加载一定业务压力,使系统运行一段较时间,以此检测系统是否稳定。在生产环境,请求压力是不均匀的,呈波浪特性,因此为了更好地模拟生产环境,稳定性测试也应不均匀对系统施加压力。



软件性能优化地两个基本原则

  • 你不能优化一个没有测试的软件

  • 你不能优化一个你不了解的软件



性能优化的一般方法

  • 性能测试,获得性能指标

  • 指标分析,发现性能与资源瓶颈点

  • 架构与代码分析,寻找性能与资源瓶颈关键所在

  • 架构与代码优化,优化关键技术点,平衡资源利用

  • 性能测试,进入性能优化闭环



系统性能优化的分层思想(分为7层)

  • 机房与骨干网络性能优化

  • 服务器与硬件性能优化

  • 操作系统性能优化

  • 虚拟机性能优化

  • 基础组件性能优化

  • 软件架构性能优化

  • 软件代码性能优化



软件架构性能优化三板斧:缓存,异步,集群



操作系统

程序运行时的架构

代码从磁盘加载到内存,交给cpu执行。



计算机的cpu核心数是有限的,但是,计算机却可以同时处理成百上千的并发请求,是如何做到的?

进程分时执行,cpu运行速度很快,可以切换执行进程任务



进程的运行期状态

运行态:当一个进程在cpu上运行时,就称该进程处于运行状态。处于运行状态的进程的数目小于等于cpu的数目。

就绪态:当一个进程获得了除cpu以外的一切所需资源,只要得到cpu即可运行,则称此进程处于就绪状态,有时也被称为等待运行状态

阻塞态:也称等待或睡眠状态,当一个进程正在等待某一事件发生(如等待I/O完成,等待锁)而暂时停止运行,这时即使把cpu分配给进程也无法运行。



不同进程轮流在cpu上运行,每次进行进程间切换时,代价非常大。采用多线程模型可以解决这个问题。所有的线程共享着进程的内存地址空间,每个线程也有拥有自己私有的内存地址范围,其他线程不能访问。

锁(IO)会引起线程阻塞。阻塞导致线程既不能继续执行,也不能释放资源。进而导致资源耗尽。最终导致系统崩溃。



怎样才能避免阻塞引起的崩溃 有三个办法

限流

降级

避免阻塞:采用异步I/O,无临界区(Actor模型)



线程安全

临界区



CAS(V,E,N)

  • V表示要更新的变量

  • E表示预期值

  • N表示新值

如果V值等于E值,则将V的值设为N,若V值和E值不同,什么都不做

CAS是一种系统原语,原语的执行必须是连续的,在执行过程中不允许被中断。



各式各样的锁

自旋锁:指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁。这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗cpu。



文件与硬盘I/O



机械硬盘的结构

固态硬盘的结构

B+树

LSM树

文件控制块:文件系统将硬盘空间以块为单位进行划分(每个块4K),每个文件占据若干块,然后再通过一个文件控制块FCB记录每个文件占据的硬盘数据块。

Linux inode控制块

  • inode中记录着文件权限,所有者,修改时间和文件大小等文件属性信息,以及文件数据块硬盘地址索引

  • inode是固定结构的,能够记录的硬盘地址索引数也是固定的,只有15个索引

  • 因为inode可以记录的数据块的数目是确定的。如果每个数据块的大小为4k,那么单个linux文件大小最大不超过70G



RAID独立硬盘冗余阵列

分布式文件系统HDFS

用户头像

hifly

关注

还未添加个人签名 2018.03.08 加入

还未添加个人简介

评论

发布
暂无评论
第7周总结:性能测试,操作系统和文件系统