You need to enable JavaScript to run this app.
文档中心
应用性能监控全链路版

应用性能监控全链路版

复制全文
下载 pdf
使用指南
用户体验
复制全文
下载 pdf
用户体验
针对应用性能对用户体验的问题分析,客户端监控提供了启动分析和页面体验两种场景。通常来说,应用启动过程的体验问题以及访问页面时的耗时会对企业的收入和口碑有至关重要的影响。​
前提条件​
启动分析​
启动分析监控不同启动类型的耗时情况,通过启动相关指标的趋势图、分布图可了解应用启动过程中的耗时数据。​
筛选条件​
您可以通过以下筛选条件进行数据筛选。​
  • Android系统支持的筛选维度:​
  • 时间、设备ID、User ID、启动类型、系统版本、APP版本、APP小版本号、机型、APM SDK版本、下载渠道、自定义维度。​
  • iOS系统支持的筛选维度:​
  • 时间、设备ID、User ID、Prewarm启动、启动类型、越狱状态、系统版本、APP版本、APP小版本号、机型、APM SDK版本、下载渠道、自定义维度。​
启动类型​
​
启动类型​
定义​
Android计算方式​
iOS数据口径​
首次启动​
App安装后的第一次冷启动,包含版本升级、删除重装。​
Activity的onResume() - Application构造函数​
从进程创建到首个UIViewController.didAppear方法调用​
冷启动​
App进程从无到有的启动过程​
Activity的onResume() - Application构造函数​
从进程创建到首个UIViewController.didAppear方法调用​
温启动​
App进程存活,再次触发启动的过程(back退出再次进入)​
Activity的onResume() - Activity的onCreate()​
不涉及​
热启动​
App进程存活,再次触发启动的过程(后台切换到前台)​
Activity的onResume() - Activity的onRestart()​
从willEnterForeground到didBecomeActive​
​
iOS Prewarm​
iOS 15以上的系统中存在Prewarm策略,使得应用的一部分启动流程提前,导致平台统计到的启动时间偏大。​
对于这种情况,平台采取方案:如果触发了Prewarm,那么平台统计到的启动时长会进行校准,即忽略一部分启动时间,因此统计到的启动时间会略小于真实时间,且上报的启动Trace可能会缺少execToLoad或者loadToDidFinishLaunching时间。​
如果您希望获取更加精准的启动时间,请把SDK升级到2.11.1或更高版本,并执行以下操作:​
  1. 在main方法中调用[RangersAPM prewarmCheckStart],同时在application:willFinishLaunchingWithOptions:方法中调用[RangersAPM prewarmCheckEnd]。​
  • 如果您的main方法或者application:willFinishLaunchingWithOptions:方法中包含复杂逻辑,则不建议此操作。​
  1. 在application:didFinishLaunchingWithOptions:最开始初始化SDK。​
  • 如果由于特殊原因无法太早初始化,请首先调用[RangersAPM applicationDidFinishLaunching]。​
启动情况概览​
启动时间和次数​
启动时间和次数页面可以查看筛选条件下启动平均时间和启动次数的趋势图。​
​Image​​
启动时间分布​
启动时间分布页面可以查看筛选条件下启动时间的分布情况。​
​Image​​
性能分解​
​Image​​
性能分解中提供了启动阶段各指标的趋势图,以了解具体影响启动耗时的原因。​
​
监控端​
说明​
Android端​
  • init_time_avg:Application.attachbaseContext()方法耗时​
  • build_avg:Application.attachbaseContext()结束到Application.onCreate()结束​
  • load_avg:Application.onCreate()结束到MainActivity.onResume()结束​
iOS端​
  • from_exec_to_load:从进程开始函数exec开始到指定+load执行的阶段​
  • from_load_to_didFinishLaunching:从指定+load执行开始到didFinishLaunching函数执行开始的阶段​
  • from_didFinishLaunching_to_first_render_time:从didFinishLaunching函数执行开始到首次渲染完成(CoreAnimation首次commit完成)的阶段​
  • from_vc_loadView_to_didAppear:从FirstVC.loadView()到FirstVC.viewDidAppear()结束的阶段​
​
分位值​
​Image​​
分位值是通过对大量数据进行统计分析得到的。按照启动时间排序取分位值,查看该时间点的启动时间最高值和最低值的占比。​
说明​
  • 开始时间:Application的构造函数​
  • 结束时间:第一个onResume方法的执行点​
  • Activity首页:第一个执行onResume方法的Activity​
  • 99%分位值、95%分位值、75%分位值、50%分位值都较近:启动时间长的情况普遍存在​
  • 99%分位值、95%分位值较近,75%分位值、50%分位值较远:启动时间长短都有,分布较均匀​
启动节点耗时​
​Image​​
  • 启动首次加载页面:支持在右上角切换启动首页,满足App的多个启动首页的场景。​
  • 关键节点说明:​
  • ​
    系统​
    节点​
    说明​
    Android​
    totalTime​
    启动总耗时。是首次执行onResume的activity,更多信息请参见启动类型。​
    首页的启动分位数是启动总耗时total time。​
    ​
    app_constructor​
    Application构造函数耗时​
    ​
    app_attachBaseContext​
    Application attachBaseContext()方法耗时​
    ​
    app_onCreate​
    Application onCreate()方法耗时​
    ​
    initData​
    启动自定义打点initData阶段耗时​
    ​
    activity_onCreate​
    Activity onCreate()方法耗时​
    ​
    activity_onStart​
    Activity onStart()方法耗时​
    ​
    activity_onResume​
    Activity onResume()方法耗时​
    ​
    activity_onRestart​
    Activity onRestart ()方法耗时​
    iOS​
    totalTime​
    启动总耗时​
    ​
    from_exec_to_load​
    从进程开始函数exec开始到指定+load执行的阶段​
    ​
    from_load_to_didFinishLaunching​
    从指定+load执行开始到didFinishLaunching函数执行开始的阶段​
    ​
    from_didFinishLaunching_to_first_render_time​
    从didFinishLaunching函数执行开始到首次渲染完成(CoreAnimation首次commit完成)的阶段​
    ​
    from_vc_loadView_to_didAppear​
    从FirstVC.loadView()到FirstVC.viewDidAppear()结束的阶段​
    ​
  • 耗时详情:单击可以查看该节点的指标趋势图和分位值趋势图。​
异常统计和追踪​
慢启动分析​
慢启动分析展示慢启动趋势、慢启动分布和慢启动详情。其中,慢启动趋势中展示了慢启动占比、慢启动次数、正常冷启动次数的趋势图。​
​Image​​
慢启动详情​
详细信息​
详细信息中记录了该异常下慢启动各指标和详细的慢启动发生时详细的参数取值。​
​Image​​
指标说明:​
​
指标​
Android说明​
iOS说明​
pre-初始化耗时​
Android无意义,为0​
从进程开始函数exec开始到指定+load执行的阶段​
初始化耗时​
Application.attachbaseContext()方法耗时​
从指定+load执行开始到didFinishLaunching函数执行开始的阶段​
应用构建耗时​
Application.attachbaseContext()结束到Application.onCreate()结束​
从didFinishLaunching函数执行开始到首次渲染完成(CoreAnimation首次commit完成)的阶段​
页面加载耗时​
Application.onCreate()结束到MainActivity.onResume()结束​
从FirstVC.loadView()到FirstVC.viewDidAppear()结束的阶段​
​
慢启动节点耗时​
慢启动节点耗时展示了该异常下各Task的耗时。​
​Image​​
启动崩溃统计​
启动崩溃统计通过查看崩溃趋势、崩溃分布和崩溃列表来统计启动阶段发生的崩溃问题。其中,启动阶段定义为在应用启动8s内为启动阶段。通过查询该模块页面的崩溃情况,并查询对应的issue,通过堆栈等信息做定位分析。​
  • 崩溃趋势展示了启动崩溃指标和趋势图。​
  • 崩溃分布通过多维分析了解慢启动分布情况便于排查问题。​
  • 异常崩溃列表记录了发生启动异常的issue。​
Native页面体验​
注意​
Native页面体验中提供了页面响应、流畅性和丢帧、异常统计和追踪三个页面的看板能力。​
在页面体验中,通过页面响应耗时、页面卡顿情况、卡顿崩溃的分析来了解整个应用的页面体验指标以及定位异常。​
筛选条件​
您可以通过以下筛选条件进行数据筛选。​
  • Android系统支持的筛选维度:​
  • 时间、设备ID、User ID、页面、系统版本、APP版本、APP小版本号、机型、APM SDK版本、下载渠道、自定义维度。​
  • iOS系统支持的筛选维度:​
  • 时间、设备ID、User ID、越狱状态、页面、系统版本、APP版本、APP小版本号、机型、APM SDK版本、下载渠道、自定义维度。​
页面响应​
页面响应提供了各页面指标列表。​
​Image​​
指标说明:​
​
指标​
说明​
触发次数​
筛选条件下该页面被触发的次数​
失败占比​
筛选条件下失败页面次数/筛选条件下页面打开次数​
  • 对iOS来说,页面执行了viewWillAppear:方法,但没有执行viewDidAppear:方法为失败​
  • 对Android来说,页面的onCreate开始为起点,定义没走到onResume结束为失败​
可用占比​
1-失败占比​
崩溃占比​
筛选条件下发生崩溃的页面次数/筛选条件下页面打开次数​
流畅占比​
筛选条件下页面打开耗时未达到设定阈值的页面次数/筛选条件下页面打开次数​
慢页面占比​
1-流畅占比​
​
单击页面名称,进入页面详情查看该页面的加载时间及次数、加载时间分布、分位值、页面加载时序图。​
页面详情​
页面详情可以查看该页面加载次数、加载耗时、加载时间分布图、上线后各时间点被用户访问的次数统计。​
加载时间及次数​
​Image​​
加载时间分布​
​Image​​
分位值​
​Image​​
页面加载时序图​
页面加载时序图中,可定位影响页面加载耗时的关键Task,找到后可精准优化。​
​Image​​
流畅性和丢帧​
流畅性和丢帧提供了双端FPS的指标趋势图、分布图,以及各页面指标列表。​
FPS分位值趋势图​
FPS分位值趋势图中展示了FPS 1%、5%、25%、50%、75%、95%、99%分位值以及平均值的分布趋势。​
​Image​​
FPS流畅度分布​
FPS流畅度分布图中展示了FPS_FAST占比、FPS_NORMAL占比、FPS_BAD占比以及FPS_BAD增长率。​
​Image​​
参数说明:​
  • FPS_FAST:帧率 ≥ 50,流畅​
  • FPS_NORMAL:帧率 40 ~ 50,一般​
  • FPS_BAD:帧率 0 ~ 40,不流畅​
详细信息​
详细信息列表中展示了页面样本量、FPS平均值、掉帧归因、掉帧评分等信息。​
​Image​​
  • 掉帧归因:单击进入详情页面,例如归因是卡顿,那么单击进入卡顿趋势。​
  • 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_BAD:FPS < 40​
  • FPS_NORMAL:40 ≤ FPS < 50​
  • FPS_FAST:FPS ≥ 50​
  • FPS_BAD增长率:FPS_BAD 占比相对上一个时间点的变化率​
  • 样本量分布:各时间点的 FPS 上报次数和用户数。​
  • APP版本排行、机型版本排行:按 APP 版本、机型分组,展示样本量和 FPS 平均值。​
说明:FPS_BAD 按 FPS 数值划分,与丢帧详情中按丢帧数划分的“严重”不是同一个指标。​
丢帧详情​
SDK 记录每一帧的丢帧数,并按单帧丢帧数分为四个档位:​
  • 正常:0~2 帧​
  • 轻微:3~8 帧​
  • 一般:9~24 帧​
  • 严重:25 帧及以上​
以下占比均按帧数计算:​
  • 绘制帧数:统计期间采集到的帧总数(含未丢帧的帧),即四个档位的帧数之和。​
  • 严重丢帧率:展示轻微以上占比、一般以上占比、严重占比。例如:轻微以上占比 =(轻微 + 一般 + 严重)帧数 ÷ 绘制帧数。​
  • 丢帧趋势:各时间点四个档位的帧数占比。轻微以上占比变化率为轻微以上占比相对上一个时间点的变化率。​
  • 丢帧分布:各档位的帧数及占比。​
  • 样本量分布:各时间点的绘制帧数和用户数。​
掉帧评分计算方式​
SDK 记录页面滑动期间每一帧的丢帧数,服务端按单帧丢帧数加权:​
  • 1~2 帧:×2​
  • 3~6 帧:×4​
  • 7~13 帧:×8​
  • 14~25 帧:×16​
  • 26 帧及以上:×32​
单次采样得分 = Σ(丢帧数 × 16ms × 出现次数 × 权重)÷ 滑动时长 ÷ 6。列表中的掉帧评分为该页面所有采样得分的平均值。​
示例:一帧丢 2 帧计 2 × 16 × 2 = 64;一帧丢 10 帧计 10 × 16 × 8 = 1280。丢帧越多,权重越大,长时间卡顿对评分的影响远大于轻微丢帧。​
注:掉帧评分的权重分段与上方丢帧档位的划分不同,两者独立计算。​
异常统计和追踪​
页面的异常提供了慢页面分析、卡顿页面分析、崩溃页面分析这三种异常场景的数据查询与异常归因的能力,查询该模块页面的慢访问次数与分布。​
  • 慢页面分析:慢页面趋势图、慢页面分布、慢页面列表​
  • 卡顿页面分析:卡顿趋势、卡顿分布、卡顿列表​
  • 崩溃页面分析:崩溃趋势、崩溃分布、异常崩溃列表​
​
最近更新时间:2026.10.15 20:24:45
这个页面对您有帮助吗?
有用
有用
无用
无用