针对应用性能对用户体验的问题分析,客户端监控提供了启动分析和页面体验两种场景。通常来说,应用启动过程的体验问题以及访问页面时的耗时会对企业的收入和口碑有至关重要的影响。
前提条件
启动分析
启动分析监控不同启动类型的耗时情况,通过启动相关指标的趋势图、分布图可了解应用启动过程中的耗时数据。
您可以通过以下筛选条件进行数据筛选。
- 时间、设备ID、User ID、启动类型、系统版本、APP版本、APP小版本号、机型、APM SDK版本、下载渠道、自定义维度。
- 时间、设备ID、User ID、Prewarm启动、启动类型、越狱状态、系统版本、APP版本、APP小版本号、机型、APM SDK版本、下载渠道、自定义维度。
iOS 15以上的系统中存在Prewarm策略,使得应用的一部分启动流程提前,导致平台统计到的启动时间偏大。
对于这种情况,平台采取方案:如果触发了Prewarm,那么平台统计到的启动时长会进行校准,即忽略一部分启动时间,因此统计到的启动时间会略小于真实时间,且上报的启动Trace可能会缺少execToLoad或者loadToDidFinishLaunching时间。
如果您希望获取更加精准的启动时间,请把SDK升级到2.11.1或更高版本,并执行以下操作:
- 在main方法中调用[RangersAPM prewarmCheckStart],同时在application:willFinishLaunchingWithOptions:方法中调用[RangersAPM prewarmCheckEnd]。
- 如果您的main方法或者application:willFinishLaunchingWithOptions:方法中包含复杂逻辑,则不建议此操作。
- 在application:didFinishLaunchingWithOptions:最开始初始化SDK。
- 如果由于特殊原因无法太早初始化,请首先调用[RangersAPM applicationDidFinishLaunching]。
启动时间和次数
启动时间和次数页面可以查看筛选条件下启动平均时间和启动次数的趋势图。
启动时间分布页面可以查看筛选条件下启动时间的分布情况。
性能分解中提供了启动阶段各指标的趋势图,以了解具体影响启动耗时的原因。
分位值是通过对大量数据进行统计分析得到的。按照启动时间排序取分位值,查看该时间点的启动时间最高值和最低值的占比。
说明
- Activity首页:第一个执行onResume方法的Activity
- 99%分位值、95%分位值、75%分位值、50%分位值都较近:启动时间长的情况普遍存在
- 99%分位值、95%分位值较近,75%分位值、50%分位值较远:启动时间长短都有,分布较均匀
- 启动首次加载页面:支持在右上角切换启动首页,满足App的多个启动首页的场景。
- 耗时详情:单击可以查看该节点的指标趋势图和分位值趋势图。
异常统计和追踪
慢启动分析展示慢启动趋势、慢启动分布和慢启动详情。其中,慢启动趋势中展示了慢启动占比、慢启动次数、正常冷启动次数的趋势图。
详细信息中记录了该异常下慢启动各指标和详细的慢启动发生时详细的参数取值。
指标说明:
慢启动节点耗时展示了该异常下各Task的耗时。
启动崩溃统计通过查看崩溃趋势、崩溃分布和崩溃列表来统计启动阶段发生的崩溃问题。其中,启动阶段定义为在应用启动8s内为启动阶段。通过查询该模块页面的崩溃情况,并查询对应的issue,通过堆栈等信息做定位分析。
- 崩溃分布通过多维分析了解慢启动分布情况便于排查问题。
Native页面体验
注意
Native页面体验中提供了页面响应、流畅性和丢帧、异常统计和追踪三个页面的看板能力。
在页面体验中,通过页面响应耗时、页面卡顿情况、卡顿崩溃的分析来了解整个应用的页面体验指标以及定位异常。
您可以通过以下筛选条件进行数据筛选。
- 时间、设备ID、User ID、页面、系统版本、APP版本、APP小版本号、机型、APM SDK版本、下载渠道、自定义维度。
- 时间、设备ID、User ID、越狱状态、页面、系统版本、APP版本、APP小版本号、机型、APM SDK版本、下载渠道、自定义维度。
页面响应
页面响应提供了各页面指标列表。
指标说明:
单击页面名称,进入页面详情查看该页面的加载时间及次数、加载时间分布、分位值、页面加载时序图。
页面详情可以查看该页面加载次数、加载耗时、加载时间分布图、上线后各时间点被用户访问的次数统计。
页面加载时序图中,可定位影响页面加载耗时的关键Task,找到后可精准优化。
流畅性和丢帧
流畅性和丢帧提供了双端FPS的指标趋势图、分布图,以及各页面指标列表。
FPS分位值趋势图中展示了FPS 1%、5%、25%、50%、75%、95%、99%分位值以及平均值的分布趋势。
FPS流畅度分布图中展示了FPS_FAST占比、FPS_NORMAL占比、FPS_BAD占比以及FPS_BAD增长率。
参数说明:
- FPS_NORMAL:帧率 40 ~ 50,一般
详细信息列表中展示了页面样本量、FPS平均值、掉帧归因、掉帧评分等信息。
- 掉帧归因:单击进入详情页面,例如归因是卡顿,那么单击进入卡顿趋势。
- FPS详情:单击进入FPS详情页面,查看FPS分位值趋势图、FPS流畅度分布、样本量分布、APP版本排行、机型版本排行。
- 丢帧详情:单击进入丢帧详情页面,查看严重丢帧率、丢帧趋势、丢帧分布、样本量分布。
指标说明:
列表字段
- 样本量:统计时间范围内,该页面的 FPS 上报次数。
- FPS平均值:该页面所有 FPS 上报值的平均值。
- 掉帧评分:衡量页面滑动时的卡顿程度,分数越高越卡。计算方式见下方“掉帧评分计算方式”。掉帧评分基于丢帧数据计算,与样本量不是同一份上报。
FPS详情
- FPS分位值趋势图:各时间点 FPS 的 1、5、25、50、75、95、99 分位值和平均值,可在图例中切换。分位越低代表体验越差的样本,例如 5 分位值为 40,表示 5% 的样本 FPS 低于 40。
- FPS流畅度分布:按单次上报的 FPS 值分为三档,展示各档样本占比。
- FPS_NORMAL:40 ≤ FPS < 50
- FPS_BAD增长率:FPS_BAD 占比相对上一个时间点的变化率
- 样本量分布:各时间点的 FPS 上报次数和用户数。
- APP版本排行、机型版本排行:按 APP 版本、机型分组,展示样本量和 FPS 平均值。
说明:FPS_BAD 按 FPS 数值划分,与丢帧详情中按丢帧数划分的“严重”不是同一个指标。
丢帧详情
SDK 记录每一帧的丢帧数,并按单帧丢帧数分为四个档位:
以下占比均按帧数计算:
- 绘制帧数:统计期间采集到的帧总数(含未丢帧的帧),即四个档位的帧数之和。
- 严重丢帧率:展示轻微以上占比、一般以上占比、严重占比。例如:轻微以上占比 =(轻微 + 一般 + 严重)帧数 ÷ 绘制帧数。
- 丢帧趋势:各时间点四个档位的帧数占比。轻微以上占比变化率为轻微以上占比相对上一个时间点的变化率。
掉帧评分计算方式
SDK 记录页面滑动期间每一帧的丢帧数,服务端按单帧丢帧数加权:
单次采样得分 = Σ(丢帧数 × 16ms × 出现次数 × 权重)÷ 滑动时长 ÷ 6。列表中的掉帧评分为该页面所有采样得分的平均值。
示例:一帧丢 2 帧计 2 × 16 × 2 = 64;一帧丢 10 帧计 10 × 16 × 8 = 1280。丢帧越多,权重越大,长时间卡顿对评分的影响远大于轻微丢帧。
注:掉帧评分的权重分段与上方丢帧档位的划分不同,两者独立计算。
异常统计和追踪
页面的异常提供了慢页面分析、卡顿页面分析、崩溃页面分析这三种异常场景的数据查询与异常归因的能力,查询该模块页面的慢访问次数与分布。
- 慢页面分析:慢页面趋势图、慢页面分布、慢页面列表