第七周总结
本周主要学习了性能优化的一些内容。
性能测试主要的一些指标包括响应时间,并发数,吞吐量,性能计数器等响应时间
响应时间:指的是系统从发出请求开始到收到最后相应数据所需要的时间。响应时间是系统最重要的性能指标,直观的反映了系统的快慢。
并发数:系统能够同时处理请求的数目,这个数字也反映了系统的负载特性。对于网站而言,并发数即系统并发用户数,指同时提交请求的用户数目,与此相对应,还有在线用户数(当前登录系统的用户数)和系统用户数(可能访问系统的总用户数)
吞吐量:指单位时间内系统处理的请求数量,提现系统的处理能力。对于网站,可以用“请求数/秒”或者是”页面数/秒”来衡量,也可以用“访问人数/天”或者是“处理的业务数/小时”等来衡量
Tps(每秒事务数)也是吞吐量的一个指标,此外还有hps(每秒http请求数),qps(每秒查询数)等。
吞吐量=(1000/响应时间ms)*并发数
性能计数器:是描述服务器或者操作系统性能的一些数据指标。包括 system load,对象与向成熟,内存使用,cpu使用,磁盘与网络i/o等指标。这些指标也是系统监控的重要参数,对这些指标设置报警阈值,当监控系统发现性能计数器超过阈值的时候,就想运维和开发人员报警,及时发现处理系统异常。
性能测试方法可细分为性能测试,负载测试,压力测试,稳定性测试
性能测试:以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。
负载测试:对系统不断地增加并发请求以增加系统压力,知道系统的某项或者多项性能指标达到安全临界值,如某种资源已经呈饱和状态,这时候继续对系统施加压力,系统的处理能力不但不能提高,反而会下降。
压力测试:超过安全负载的情况下,对系统继续施加压力,知道系统崩溃或者不能再处理任何请求,以此获得系统最大压力承受能力。
稳定性测试:被测系统在特定硬件,软件,网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定。在生产环境,请求压力是不均匀的,呈波浪特性,因此为了更好地模拟生产环境,稳定性测试也应不均匀地对系统施加压力。
以及全链路测试中设计到的问题:
1、压测相关的业务系统众多,并且牵涉到整条链路上所有的基础设置和中间件,如何而确保压测流量能够通畅无阻,没有死角?压测的数据证明构造(亿万几的商品和用户),数据模型如何和真实贴近?
数据如何进行构造:dump所有的request,可以使用网络探针的方式
2、全链路压测直接在线上的真实环境进行模拟,如何来保障对线上无影响?
使用数据隔离:
数据隔离的方法与方式
逻辑隔离,直接把测试数据和正常数据写到一起,通过特殊的标识能够区分开。可能污染线上数据,破坏线上数据的安全性。
虚拟隔离,在所有写数据的地方做mock,并不真正的写进去。这个方案不会对向上产生污染,但是mock对压测结果的准确性会产生干扰。
物理隔离,所有写数据的地方对压测流量进行识别,判断一旦是压测流量的写,就写到隔离的位置,包括存储,缓存,搜索引擎等。
3、大型促销活动所带来的的巨大流量要怎样制作出来?
使用天猫双十一的例子,部署以前多个全球的cdn服务器,使用master节点进行管理并从全球各地过来的用户请求
评论