性能测试与操作系统 - 第 七 周总结

用户头像
孙志平
关注
发布于: 2020 年 07 月 22 日

性能测试

性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。不同视角下的网站有不同的标准,也有不同的优化手段。

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

  • 图片懒加载

  • 数据异步加载

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

  • 缓存

  • CDN



性能测试指标



响应时间

指应用系统从发出请求开始到收到最后响应数据所需的时间(从发出第一个字节开始标记开始,从收到最后一个字节后标记结束)。响应时间直观反映了系统的“快慢”。



并发数

系统能够同时处理请求的数目,这个数字也反映了系统的负载特性。对于网站而言,并发数即系统并发用户数,指同时提交请求的用户数目,于此相对应,还有在线用户数(当前登录系统的用户数)和系统用户数(可能访问系统的中用户数)。



吞吐量(吞吐量=(1000/响应时间ms)* 并发数

指单位时间内系统处理的请求数,体现系统的处理能力。对于网站,可以用“请求数/秒”或“页面数/秒”来衡量,也可以用“访问人数/天”或是“处理的业务数/小时”等来衡量。(通常以秒为单位)

TPS(每秒事务数)也是吞吐量的一个指标,此外还有HPS(每秒HTTP请求数),QPS(每秒查询数)等。



性能计数器

是描述服务器或操作系统性能的一些数据指标。包括System Load,对象和线程数,内存使用,CPU使用,磁盘与网络IO等指标。这些指标也是系统监控的重要参数,对这些指标设置报警阈值,当监控系统发现性能计数器超过阈值的时候,就向运维和开发人员报警,及时发现处理系统异常。



性能测试方法

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

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

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

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



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

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

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



进程运行时状态

  • 运行:进程正在CPU上运行

  • 就绪:进程获得了除CPU以外的一切所需资源,只要得到CPU,就能运行

  • 阻塞:也称为等待或睡眠状态,当进程正在等待某一事件发生(如IO完成,锁等),此时即使把CPU分配给进程也无法执行



什么是线程安全

当多个线程去访问一个类(对象或方法时),总能表现出正确的结果

类A就不是线程安全的,因为10个线程去执行这个类的add方法, 最后$num 的结果可能不是10,所以add方法不能表现出正确的结果,因此不是线程安全的

class A {
private static $num = 0;
public function add(){
self::$num += 1;
}
}



当多个线程去访问一个类(对象或方法时),不能表现出正确的结果,所以我们需要在此之前加锁,来保证正确的结果



乐观锁

给数据加上版本号,当修改是带上版本号,如果版本号不是最新的则更新失败



悲观锁

先给数据加锁,修改操作完成后释放



用户头像

孙志平

关注

还未添加个人签名 2018.05.08 加入

还未添加个人简介

评论

发布
暂无评论
性能测试与操作系统 - 第 七 周总结