实时警报通知:微信告警通知的重要性解析
931
2022-12-31
本文目录一览:
MoonLight 是 iOS/Mac 上的轻量化的性能测试组件,它可以单独集成在任何 App 中实现自动化性能数据的采集,你可以非常轻松的获取到 App CPU、System CPU、App Memory、System GPU 以及 GPU Info 的数据。MoonLight 由声网Agora 开发,并已开源至 Github。
开源地址: https://github.com/AgoraIO-Community/MoonLight
MoonLight ,它的中文意思名为 月光 。月光弥漫在地球之上是宁静且自然的,月光会给予地球上的人们以指引。而月光的寓意恰好和我们开发性能测试组件的出发点相契合。
我们希望 iOS/Mac 的性能测试也能像月光一样,轻松且自然。MoonLight 有着更低的性能消耗,更容易的使用方式,更精准的性能数据。它将帮助开发团队更快速更精确的定位性能问题,进而推动性能优化和提升。帮助测试团队更快更准的获取性能数据,提升测试效率。
MoonLight采集到的性能数据是基本和Instruments保持一致的。具体的优劣对比如下:
Warning! For iOS, do not use it on AppStore release. Recommend use it on debug mode.
iOS/Mac MoonLight 自身的性能消耗非常低,几乎可以忽略不计;测试的过程中,性能输出稳定;App CPU、System CPU、App Memory、GPU 可以和Instruments或者活动监视器结果保持一致。
备注:MoonLight对CPU有做归一化处理. CPU(MoonLight) = CPU(Instruments) / 核心数
测试case:
Step1: 打开App,打开MoonLight的检测,测试性能data1。
Step2: 打开App, 不打开MoonLight的检测,测试性能data2。性能消耗 = data1 - data2
App Memory 消耗 = 7.38-7.34 = 0.04Mb ;App CPU 消耗 = (2.1%-0.1%)/ (6核) = 0.33% ;GPU = 0% ,并且整个性能测试阶段,数据波动稳定,不会出现MoonLight的开启造成性能有不稳定变化。
测试设备:iPhone XS iOS 14.2 六核
App Memory 消耗 = 14.42-14.36 = 0.06Mb ;App CPU 消耗 = (0.08%-0.0%)/ (4核) = 0.02% ;GPU = 0% ,并且整个性能测试阶段,数据波动稳定,不会出现MoonLight的开启造成性能有不稳定变化。
测试设备:Macbook Pro 2017 13.3 Intel i5 , System: BigSur 11.0.1
————————————————————————————
写在最后
MoonLight 是我们从日常的开发中诞生的开源工具,我们希望它能帮助开发团队更快速更精确的定位性能问题,进而推动性能优化和提升;帮助测试团队更快更准的获取性能数据,提升测试效率。欢迎大家使用。
MoonLight 开源地址: https://github.com/AgoraIO-Community/MoonLight
通过分析业务逻辑和技术架构组件性能测试,创建性能模型组件性能测试,制定性能方案组件性能测试,准备应用环境,设计并实施性能部署监控,实现符合真实业务逻辑组件性能测试的压力,通过监控手段获取各组件的性能计数器,分析计数器采集出的数据,查找出性能瓶颈的根本原因并优化,最后通过环比生产环境的性能数据修正场景。
2.2.1、时间指标
2.2.2、容量指标
2.2.3、资源利用率指标
2.3.1、业务模型
2.3.2、监控模型
2.4.1、测试环境
2.4.2、测试数据
2.4.3、测试模型 - 基于业务模型构造测试数据
2.4.4、性能指标
2.4.5、压力测试-阶梯压力测试高并发压力测试
2.4.6、准入准出
2.4.7、进度风险
2.5.1、软硬件环境(包括压力机)
2.5.2、应用版本
2.5.3、基础设施
2.5.4、网络结构
2.5.5、基础数据
2.5.6、压力工具
2.6.1、系统监控
2.6.2、中间件监控
2.6.3、缓存监控
2.6.4、队列监控
2.6.5、负载均衡监控
2.6.6、熔断限流
2.6.7、链路监控
2.7.1、基准场景
2.7.2、容量场景
2.7.3、稳定性场景
2.7.4、异常场景
2.8.1、场景结果整理
2.8.2、监控结果整理
2.8.3、性能整体分析
2.8.4、性能结论
2.8.5、优化建议
2.8.6、运维建议
性能验证:验证系统是否达到指定的指标。 举例:RT是300ms,QPS/TPS是否可以达到800。
性能调优:验证是否达到系统的最大容量。 举例:限制或者不限制RT、内存水位、CPU水位,QPS/TPS可以达到多少。
容量验证:需要多少台机器。 举例:50 w UV,需要配置多少台机器。
1000万的用户,在场景A中,业务1占比10%,业务2占比20%,业务3占比30%;
1000万的用户,在场景B中,业务1占比20%,业务2占比30%,业务3占比40%;
1000万的用户,在场景C中,业务1占比30%,业务2占比40%,业务3占比50%。
包括接口响应时间+业务响应时间
参考:
互联网企业:500ms以下,例如淘宝业务10ms左右。
金融企业:1s以下为佳,部分复杂业务3s以下。
保险企业:3s以下为佳。
制造业:5s以下为佳。
包括接口容量+业务容量
如果是接口层性能测试,TPS中的T 可以直接定义为接口级;
如果业务级性能测试,TPS中的T 可以直接定义为每个业务步骤和完整的业务流;
举例:
start事务(接口1)
商品详情页接口A
end事务(接口1)
start事务(接口2)
商品详情页接口B
end事务(接口2)
start事务(业务A)
加入购物车(接口1)-下单(接口2)-支付(接口3)
end事务(业务A)
start事务(业务A)
点击-加入购物车(接口1)-下单(接口2)-支付(接口3)
end事务(业务A)
a、操作系统:CPU、Memory、Network、IO、System、Swap
b、JVM:GC、classes
...
对于长连接来说,最大并发用户数即系统的并发接入能力。实际上,就算是长连接,如果实际业务已经丢掉组件性能测试了异常的请求,那么最大并发用户数不等于系统的并发接入能力。
对于短连接来说,最大并发用户数并不等于系统的并发接入能力。
并发是在单位时间内完成的事务(T)的个数。
在线用户数和压力线程之间的关系:
从以上的计算逻辑中,我们可以看到,这其中有几个关键数据:
举例:
1) 在线用户数:1个用户,100个请求,响应时间是250s
用户数:1个
响应时间:250s
请求数:100
tps计算: 1*100/250=0.4(请求数/秒)
在线用户数(有停顿时间):100000个用户,100个请求,响应时间是3600s
用户数:100000个
响应时间:3600s
请求数:100
tps计算:100000100/3600=2777.8 tps
2) 并发用户数(无停顿时间):1个用户,100个请求,响应时间是6s
用户数:1个
响应时间:6s
请求数:100
tps计算:1*100/6=16.67 tps
3) 压力线程=(在线用户数×单用户请求数)/峰值采样时间段÷一个压力线程的请求级TPS
压力线程 = 2777.8(100000在线用户的请求级TPS)/16.67(1个压力线程的请求级TPS)=167
4) 并发用户数=在线用户数×有停顿时间的单线程TPS÷无停顿时间的单线程TPS
并发用户数 = 100000(在线用户数)*0.4(有停顿时间的单线程TPS)/16.67(无停顿时间的单线程TPS)=2399
5) 并发度=在线用户÷并发用户×100%(取值要在同一时间段)
并发度 = 100000/2399*100%=41.68%
参考:高楼老师的课程
关于组件性能测试和组件功率测试的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 组件性能测试的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于组件功率测试、组件性能测试的信息别忘了在本站进行查找喔。发表评论
暂时没有评论,来抢沙发吧~