App端性能体验功能说明
完整介绍Quick Tracking性能体验模块-APP端涉及功能
产品介绍
产品概述
应用性能稳定是良好用户体验中非常关键的一环,而现实情况却是应用崩溃、卡顿、加载缓慢、页面白屏等问题,频频出现在用户的真实体验之中,成为影响业务表现的直接杀手。为了更好保障应用性能稳定,产研团队在整个开发周期与线上运营阶段都面临诸多痛点,亟需高效便捷的应对解决。
性能监控产品通过轻量级的集成接入即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力,及卡顿、启动分析等性能能力,支持多场景、多通道智能告警监控,帮助开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。
核心功能
错误捕获能力强,类型丰富 提供Java崩溃、Native崩溃、Swift崩溃、Objective-C崩溃、ANR、自定义异常的捕捉
快速定位错误根源 提供行为日志、详细日志、内存快照、设备信息、自定义字段,帮您快速发现问题原因,提升问题解决效率
多种告警通道 提供邮件、钉钉、飞书、企业微信的告警触达通道,提供webhook接口,助您7*24小时监控应用情况
核心场景

使用入门
功能入口
您可以在首页点击“性能体验”按钮进入本产品

或者在应用列表中点击“去性能体验”进入产品

请注意,此文档为Quick Tracking性能体验模块最新的产品功能文档。您正在使用的版本可能是旧版本,不包含此文档中的某些功能,如果需要可以联系我们。
术语表
基础字段
名词 | 名词解释 |
错误数 | 该类错误在一定时间范围内产生的次数,也就是SDK上报的日志数量 |
错误率 | 错误率 = 错误次数 / 应用启动次数,对于自定义异常类的错误,错误率可能大于100%,对于崩溃类的错误由于数据挤压和延时上报的原因,在极端情况下也可能会导致错误率大于100%。 |
影响用户数 | 在一定时间范围内对该类错误的所有错误日志按照设备维度进行排重计数 |
影响用户占比 | 影响用户占比=影响用户数/活跃用户数 |
告警设置 | 点击“告警”,针对单条错误摘要进行告警监控。 |
行为日志 | 记录用户在使用 APP 过程中,点击元素的时间点,浏览时长,跳转流程等,然后基于此进行用户行为分析。某些情况下,Crash 分析需要查询用户的行为日志,获取用户使用APP的流程,帮助解决Crash等其他问题。目前记录用户崩溃前十步内的页面浏览跳转行为,作为排查崩溃发生时的用户场景还原 |
设备分布 | 在一定时间范围内,按照机型维度对错误次数的排行 |
系统分布 | 在一定时间范围内,按照系统维度对错误次数的排行 |
运营商分布 | 在一定时间范围内,按照运营商维度对错误次数的排行 |
版本分布 | 在一定时间范围内,按照版本维度对错误次数的排行 |
页面分布 | 在一定时间范围内,按照崩溃发生的页面维度对错误次数的排行 |
时长分布 | 在一定时间范围内,按照运行开始到崩溃发生的时间分布维度对错误次数的排行 |
地域分布 | 在一定时间范围内,按照地域维度对错误次数的排行 |
智能聚合 | 结合算法,将相似错误信息聚合在同一错误摘要下展示 |
用户ID | 标识设备的唯一ID,您可上传用户账号。如果没有上传,我们将显示随机生成的用户ID |
卡顿 | 安卓:如果主线程2秒没有响应,则记为一次卡顿 iOS:如果主线程连续3次2秒没有响应,则记为一次卡顿 |
启动分析字段
名词 | 名词解释 |
首次启动 | App安装后的第一次启动,属于特殊的冷启动,记为首次启动 |
冷启动 | App结束进程,或退出到后台,进程被系统回收后,再次启动的过程 |
热启动 | App程序从后台被唤起,或从其他 App界面切换回来的过程 |
Pre-初始化耗时 | iOS:从进程开始函数exec开始到指定+load执行的阶段 |
初始化耗时 | Android: init时间为application的attachBaseContext方法开始到结束 iOS: 从指定的+load执行到finishLaunching的阶段 |
页面构建耗时 | Android:build时间为application的attachBaseContext方法结束到application的onCreate方法结束 iOS:从finishLaunching到FirstVC.viewDidLoad()的阶段 |
页面加载耗时 | Android:load时间为application的onCreate方法结束到页面onResume iOS:从FirstVC.viewDidLoad()到FirstVC.viewDidAppear()结束,首次渲染完成 |
网络分析字段
名词 | 名词解释 |
响应时间 | 服务端响应时间,包括接收响应内容的时间 |
吞吐量 | Requests per minute,筛选条件下平均每分钟的 HTTP 请求数量 |
总耗时 | 单个网络请求的端到端耗时 |
传输数据量 | 筛选条件下所有请求及对应响应的数据总量 |
访问量 | 某个地域维度下所有URL的访问数 |
首包时间 | 从发送HTTP请求结束开始,到收到服务器返回的第一个数据包所用时间 |
DNS时间 | Domain Name System解析时间 |
TCP时间 | Transmission Control Prototal传输控制协议建立连接时间 |
SSL时间 | Secure Sockets Layer 握手时间 |
总请求数 | 总请求次数 |
网络错误数 | HTTP错误+传输层错误 |
HTTP请求错误次数 | 请求HTTP错误的次数 |
慢请求次数 | 单个地址请求时间超过客户设置的阈值的次数(默认5秒) |
正常请求次数 | 总请求数-慢请求次数 |
因产品的UI和命名根据版本不同会产生迭代,您可能发现您的产品后台和产品文档中的UI略有差异,但是这不影响您的使用以及产品功能,您可以参考此文档进行产品功能学习
开关与采样配置
安卓平台:

iOS平台:

您可以在产品后台中灵活进行开关和采样率的配置,此处的配置下发到SDK后优先级会高于在SDK集成时选择的默认配置
特殊功能开关:部分高级功能需要打开开关才进行采集,开启开关后可以配置采样率
采样率配置:默认为100%,最高100%,在设备启动时判断此次PV是否采样,您可以根据自身情况调低采样率
注:安卓平台中OOM异常涵盖在崩溃分析中,如果您在SDK中将崩溃分析的开关关闭,则OOM异常也不会采集。iOS平台中需要设置OOM异常的采样率
SDK配置:
支持设置单设备每天上报自定义异常条数的上限,默认20个,最高支持120个
自定义异常的上报策略默认为跟随崩溃发送,您也可以在此处修改为实时上报,请注意,iOS开启后请不要在1分钟内多次调用自定义异常,频繁调用且实时上报可能对性能造成影响,甚至导致OOM
其他配置:
已忽略的错误是否计入统计,默认开启计入统计,如果关闭后,则在崩溃分析、ANR分析、自定义异常、卡顿分析、OOM异常、启动崩溃分析中标记为已忽略的错误就不会计入模块趋势指标统计和图表中
已忽略的错误是否在错误列表展示,默认开启计入统计,如果关闭后,则在崩溃分析、ANR分析、自定义异常、卡顿分析、OOM异常、启动崩溃分析中标记为已忽略的错误就不会在错误列表中展示
性能评分
概述
对应用的性能情况进行量化分析,通过灵活的自定义筛选参与评分的指标,并可以设置指标阈值或使用行业通用阈值,编辑应用面向用户体验的评分标准,从而校验应用整体的长期性能变化趋势
因不同种类的应用(Android、iOS、小程序、Web)参与评分的指标不同,需要您为每一个应用分别设置性能评分的计算条件,不同应用之间判断标准不互通
功能介绍
您可以在「数字体验」顶导下找寻到此「性能评分」功能
评分逻辑
以下为此模块的评分计算逻辑,您可以在性能评分配置中设置指标、权重、体验区间阈值、区间分值:
第一步:查看有几个指标参与评分 eg:崩溃率、卡顿率
第二步:参与评分的指标的权重 eg:崩溃率(40%)、卡顿率(60%)
第三步:查看所计算区间的数据 eg:崩溃率1%、卡顿率4%
第四步:计算指标所处的区间 eg:崩溃率1%属于难以忍受,卡顿率4%属于非常满意
第五步:查看用户体验的分值 eg:难以忍受0分,非常满意100分,满意90分,可忍受70分
则当日此应用的评分为:0*40%+100*60%=60分
评分趋势

可以在页面上部分看到今日的整体评分、今日评分的分布蜘蛛图,以及评分的趋势
请注意,如果您修改了下方的评分规则,那么这里的分数和趋势图需要重新计算,请您刷新页面。如果数据量比较大,可能会消耗几分钟的时间
评分设置
您需要点击「编辑」按钮开始体验评分的设置,如果没有设置,会自动选择默认的指标和配比,体验阈值提供了行业普遍认可的区间,您也可以自行更改


选择参与评分的指标,App端可选择的参与评分指标列表如下:
端 | 指标 |
Android | 崩溃率 |
ANR率 | |
自定义异常率 | |
卡顿率 | |
慢启动率 | |
OOM率 | |
网络错误率 | |
页面崩溃率 | |
平均FPS | |
平均丢帧数 | |
应用内H5页面慢加载率 | |
平均首屏时间(FP) | |
平均页面可交互时间(TTI) | |
iOS | 崩溃率 |
自定义异常率 | |
卡顿率 | |
慢启动率 | |
OOM率 | |
网络错误率 | |
页面崩溃率 | |
平均FPS | |
平均丢帧数 | |
应用内H5页面慢加载率 | |
平均首屏时间(FP) | |
平均页面可交互时间(TTI) |
分配指标权重,这决定了在计算评分的时候每个选中的指标占据了多少比例的百分比,每个指标最低占据1%
设置体验阈值,为每个选中的指标配置一个用户体验的区间阈值,可设置满意、非常满意、可忍受、难以忍受的区间,性能数据坐落于哪个区间决定了最终的分数。
体验分值,设置区间的分值,统一应用于所有的指标中,比如所有坐落于满意区间的指标70分,所有坐落于非常满意区间的指标100分,所有坐落于可忍受区间的指标50分,所有坐落于难以忍受区间的指标0分
崩溃分析
概述
App运行时,对主进程和子进程的崩溃捕获和分析。通过对崩溃日志的计算,为开发者展示了App在所选时间中的错误趋势、错误分布、错误列表和错误详情,可快速地分析出导致APP崩溃的主要原因。
名词解释
错误数:该类错误在一定时间范围内产生的次数,也就是SDK上报的日志数量
错误率:错误率 = 错误数 / 应用启动次数
影响用户数:在一定时间范围内对该类错误的所有错误日志按照设备维度进行排重计数
影响用户占比:影响用户占比=影响用户数/活跃用户数
功能介绍
错误趋势
在一定筛选条件与时间范围内,错误次数、错误率、影响用户数、影响用户占比的图表趋势,可以选择应用版本进行对比。
异常类型
在Android系统中,崩溃分为“Java崩溃”和“Native崩溃”。
在iOS系统中,支持捕获Objective-C层或Swift层崩溃。
时间范围
支持最近90天的数据查询
维度筛选
支持应用版本、设备机型、操作系统、运营商、渠道、地域的维度筛选
高级功能
新增异常:在时间范围与筛选维度条件下,首次生成错误ID的异常(错误ID是错误摘要唯一识别)
屏蔽系统级别的错误:如果错误中堆栈无业务内容,则被判定为系统级别错误。您可以屏蔽系统级别错误,以便专注于分析业务错误。
只看鸿蒙设备:指发生错误/异常的设备为HarmonyOS,但尚未支持HarmonyOS系统级别错误

错误分布
在时间范围与筛选维度条件下,按照应用版本、设备机型、操作系统、运营商、渠道、地域、崩溃页面、运行时长8个维度的分布图。
TOP5:错误次数的TOP5排行情况
详情:该维度下,各属性值对应的错误次数与用户数明细,支持在表头筛选具体属性。

错误列表
在时间范围与筛选维度条件下,所有崩溃日志按照崩溃摘要进行聚合后的错误列表。
错误排行:默认按照崩溃次数降序展示,帮助您快速的找到崩溃次数最多、影响最严重的错误。您也可以选择按照影响人数排行,找到影响面积最大的错误。
错误ID:是错误摘要的唯一识别
版本范围:在当前筛选条件下,该崩溃发生的版本范围
处理状态:该错误的处理状态,支持设置状态包括未修复、处理中、已忽略、已修复
告警设置:您可以对单个错误进行告警设置,在该位置添加的告警可在监控告警中修改和设置.
标签:支持对错误摘要添加标签
导出:导出当前展示的错误列表内容,一次导出最多支持1000条

错误详情
将错误摘要相同的错误日志聚合在一起,展示其详细信息,帮助您快速定位问题、解决问题。
ANR分析
概述
稳定性模块可以捕获发生在主进程和子进程中的ANR。通过对ANR发生次数的计算,为开发者展示了App在所选时间中的错误趋势、错误分布和错误列表,可快速地分析出导致APP发生ANR的主要原因。
名词解释
ANR:ANR是用户在使用 Android APP 过程中出现弹框,提示应用无响应,计为一次ANR。
功能介绍
错误趋势
在一定筛选条件与时间范围内,错误次数、错误率、影响用户数、影响用户占比的图表趋势,可以选择应用版本进行对比。
1.时间范围
支持最近90天的数据查询
2.维度筛选
支持应用版本、设备机型、操作系统、运营商、渠道、地域的维度筛选
3.高级功能
新增异常:在时间范围与筛选维度条件下,首次生成错误ID的异常(错误ID是错误摘要唯一识别)
只看鸿蒙设备:指发生错误/异常的设备为HarmonyOS,但尚未支持HarmonyOS系统级别错误
错误分布
在时间范围与筛选维度条件下,按照应用版本、设备机型、操作系统、运营商、渠道、地域、崩溃页面、运行时长8个维度的分布图。
TOP5:ANR次数的TOP5排行情况
详情:该维度下,各属性值对应的ANR次数与影响用户数明细,支持在表头筛选具体属性。
错误列表
在时间范围与筛选维度条件下,所有错误日志按照错误摘要进行聚合后的错误列表。
错误排行:默认按照ANR次数降序展示,帮助您快速的找到ANR次数最多、影响最严重的错误。您也可以选择按照影响人数排行,找到影响面积最大的错误。
错误ID:是错误摘要的唯一识别
版本范围:在当前筛选条件下,该崩溃发生的版本范围
处理状态:该错误的处理状态,支持设置状态包括未修复、处理中、已忽略、已修复
告警设置:您可以对单个ANR进行告警设置,在该位置添加的告警可在监控告警中修改和设置
标签:支持对错误摘要添加标签
导出:导出当前展示的错误列表内容,一次导出最多支持1000条
错误详情
将错误摘要相同的错误日志聚合在一起,展示其详细信息,帮助您快速定位问题、解决问题。
自定义异常
概述
程序对异常进行了捕获处理,为更好了解并监控这类异常,需由开发人员主动将这类异常上报到性能体验平台中,上报方式见集成文档。
名词解释
错误数:该类错误在一定时间范围内产生的次数,也就是SDK上报的日志数量
错误率:错误率 = 错误数 / 应用启动次数
影响用户数:在一定时间范围内对该类错误的所有错误日志按照设备维度进行排重计数
影响用户占比:影响用户占比=影响用户数/活跃用户数
功能介绍
错误趋势
在一定筛选条件与时间范围内,错误次数、错误率、影响用户数、影响用户占比的图表趋势,可以选择应用版本进行对比。
1.异常类型
支持自定义异常、C#错误(Unity)和Lua错误(Unity)
2.时间范围
支持最近90天的数据查询
3.维度筛选
支持应用版本、设备机型、操作系统、运营商、渠道、地域的维度筛选
4.高级功能
新增异常:在时间范围与筛选维度条件下,首次生成错误ID的异常(错误ID是错误摘要唯一识别)
只看鸿蒙设备:指发生错误/异常的设备为HarmonyOS,但尚未支持HarmonyOS系统级别错误
错误分布
在时间范围与筛选维度条件下,按照应用版本、设备机型、操作系统、运营商、渠道、地域、运行时长7个维度的分布图。
TOP5:错误次数的TOP5排行情况
错误分布详情:该维度下,各属性值对应的错误次数与影响用户数明细,支持在表头筛选具体属性。
错误列表
在时间范围与筛选维度条件下,所有错误日志按照崩溃摘要进行聚合后的错误列表。
错误排行:默认按照错误次数降序展示,帮助您快速的找到错误次数最多、影响最严重的错误。您也可以选择按照影响人数排行,找到影响面积最大的错误。
错误ID:是错误摘要的唯一识别
版本范围:在当前筛选条件下,该崩溃发生的版本范围
处理状态:该错误的处理状态,支持设置状态包括未修复、处理中、已忽略、已修复
告警设置:您可以对单个错误进行告警设置,在该位置添加的告警可在监控告警中修改和设置
标签:支持对错误摘要添加标签
导出:导出当前展示的错误列表内容,一次导出最多支持1000条
错误详情
将错误摘要相同的错误日志聚合在一起,展示其详细信息,帮助您快速定位问题、解决问题。
错误详情
概述
将错误摘要相同的错误日志聚合在一起,展示其详细信息,帮助您快速定位问题、解决问题。在崩溃分析、ANR分析、OOM异常、卡顿分析、启动崩溃分析中点击错误列表后进入相应的错误详情即可进入此功能。每个模块在错误明细中的样式内容有些许差别。
错误摘要
按照一定聚合规则将错误日志聚合后的摘要信息
累计错误次数:错误发生以来累计收到的日志数量
累积影响用户数:错误发生以来累计收到的日志所属的设备去重数
首次版本:上报至QT系统的首条错误日志对应的应用版本
首次发生:上报至QT系统的首条错误日志对应的服务器端接收时间
末次发生:上报至QT系统的末条错误日志对应的服务器端接收时间
近90天发生版本:近90天内发生错误的全部应用版本枚举
错误处理:该错误的处理状态,支持设置状态包括未修复、处理中、已忽略、已修复
监控告警:您可以对单个错误进行告警设置,在该位置添加的告警可在监控告警中修改和设置
标签:支持对错误摘要添加标签

错误明细
按照错误日志接收时间倒序展示日志详情。
基础信息
发生错误所属设备对应的系统信息与设备信息
用户ID:标识设备的唯一ID。您可上传用户账号,如果没有上传,我们将默认展APM生成的设备id
系统:支持对鸿蒙操作系统的识别
详细日志
错误堆栈信息
原始日志:支持最近7天原始日志的查看与导出。
符号表:
- Mapping文件:安卓的应用在发布时,可能会对Java的源码进行混淆处理,这样在SDK收集到的错误日志中的异常堆栈是混淆后的结果,可读性较差。为便于在错误日志详情页面正常查看异常堆栈信息,可以将应用混淆时产生的Mapping文件通过符号表管理页面进行上传。 - 符号表文件:安卓应用依赖的Native类库,或者iOS应用产生的异常堆栈是二进制的是不可读的。为了在错误日志详情页面正常查看异常堆栈信息,需要将安卓Native类库对应的so文件或iOS应用对应的dSYM文件通过符号表管理页面进行上传。

行为日志
Android端
错误发生的前20个动作中生命周期调用的顺序信息以及时间点, 按照调用顺序进行排列。支持正序和倒序,默认按照倒序排列
为参数的周期类型:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()
iOS端
展示错误发生前的10个activity

内存快照
提供错误发生时的设备内存占用情况(仅Android端支持)
自定义字段
当崩溃发生时,您可以在该回调方法中返回string类型的业务自定义数据,该数据会写入到崩溃文件中并上传到服务器展示。具体调用方法说明请见集成文档

Logcat
提供logcat日志文件信息

错误趋势
在一定筛选条件与时间范围内,该错误摘要下的错误次数、错误率、影响用户数、影响用户占比的图表趋势,可以选择应用版本进行对比。

错误分布
在一定筛选条件与时间范围内,该错误摘要下的错误日志在各个维度下的分布情况,具体支持维度参考各分析模块的维度情况。

卡顿分析
概述
卡顿分析是通过提供的监控SDK 捕获所监控App主线程消息执行超时的情况,帮助您优化用户使用体验、用户反馈问题是否与卡顿现象间接引发有关
名词解释
安卓:如果主线程2秒没有响应,则记为一次卡顿
iOS:如果主线程连续3次2秒没有响应,则记为一次卡顿
您可以在配置管理-开关与采样率配置中更改采样率。详细功能请见本文开关与采样配置章节
注意
注:此处的采样率指设备采样率,即设备的SDK初始化后会判断此设备是否在采样率内,如果设备被采样,则卡顿日志100%上报
功能介绍
卡顿趋势
您可以在此页面查看不同时间段、筛选维度下的卡顿数据趋势,默认展示全部维度、今天的数据,您可以根据自己的查询条件进行筛选

卡顿次数:筛选维度+时间条件下的卡顿次数
卡顿率:筛选维度+时间条件下的卡顿次数/启动次数
卡顿用户数:按照设备为维度去重卡顿次数得到的影响用户数结果
卡顿用户占比:筛选维度+时间条件下的卡顿用户数/启动次数
卡顿列表
您可以在此列表中查看筛选维度+时间范围内,所有卡顿问题根据日志根据算法聚合后的错误列表,默认按照卡顿次数降序展示,帮助您快速的找到卡顿次数最多、影响最严重的卡顿问题。您也可以选择按照影响人数排行,找到影响面积最大的卡顿问题

1.支持导出当前展示的错误列表内容,导出字段为:错误摘要、错误类型、最近一次发生时间、应用版本、错误次数、影响用户数、状态、错误摘要的链接。(一次导出最多支持1000条)
2.支持对单个错误进行告警设置,在该位置添加的告警可在监控告警中修改和设置
卡顿模块
卡顿模块通过智能算法聚类了卡顿的模块与子模块,支持正序聚合与倒序聚合
正序聚合:从栈顶开始到栈底聚合,您可以看到导致卡顿的核心原因是什么
倒序聚合(默认选择):从栈底开始到栈顶,聚合之后,您可以发现影响性能的最底层的方法

聚合方式 :按照所选的时间范围和维度,按照卡顿次数排行获取前200个的卡顿堆栈用于聚合,正序聚合时,每个堆栈从栈顶开始取100行;倒序聚合时,从栈底开始取100行。聚合后取前10个主模块
层的概念:指模块所属深度,每个主模块支持包含最多50层深度的模块展示,依次向右推进,每个模块在百分比右侧展示“第xx层”。同一层的模块按照出现频率由高到低排序,展示在模块右侧
搜索框:支持模糊搜索主/子模块名称,搜索后筛选出树结构中含有此结果的内容
卡顿分布
显示时间段内,按照设备(机型)、系统、运营商、版本、渠道、地域七个维度的错误次数分布图,按照页面整体筛选维度项进行筛查
卡顿详情
点击卡顿摘要可以进入卡顿详情的页面
您可以在此页面查看卡顿的详情信息,帮助您排查卡顿问题的原因,提供了卡顿趋势、卡顿分布、卡顿详细日志、卡顿设备信息以及卡顿备注的功能
启动分析
概述
启动分析通过提供详尽的启动耗时、慢启动情况、启动崩溃数据。帮助您把控应用的启动性能状态,从源头减少客户流失

名词解释
启动类型:
首次启动:App安装后的第一次启动,属于特殊的冷启动,记为首次启动
冷启动:App结束进程,或退出到后台,进程被系统回收后,再次启动的过程
热启动:App程序从后台被唤起,或从其他 App界面切换回来的过程
首次启动和冷启动支持启动阶段性能拆解
其中安卓的定义为:
初始化耗时:init时间为application的attachBaseContext方法开始到结束
页面构建耗时:build时间为application的attachBaseContext方法结束到application的onCreate方法结束
页面加载耗时:load时间为application的onCreate方法结束到页面onResume
iOS的定义为:
Pre-初始化耗时:从进程开始函数exec开始到指定+load执行的阶段
初始化耗时:从指定的+load执行到finishLaunching的阶段
应用构建耗时:从finishLaunching到FirstVC.viewDidLoad()的阶段
页面加载耗时:从FirstVC.viewDidLoad()到FirstVC.viewDidAppear()结束,首次渲染完成
其他指标:
慢启动:在首次启动/冷启动/热启动的启动类型中,超过自设置阈值的启动被定义为慢启动,默认首次启动/冷启动超过3秒为慢启动,热启动超过1秒为慢启动
启动崩溃:在启动阶段中出现的崩溃信息,支持划分首次启动、冷启动、热启动状态下的崩溃,默认启动耗时上限为8秒,超出时间的崩溃不被划分至启动崩溃,您可以在启动设置中子定义启动耗时上限,可以自定义设置启动上限,最高值为20秒
自定义性能分解:您可以在SDK中自定义启动阶段的拆解,自定义埋点的阶段分解会在启动趋势-性能分解和慢启动详情的启动时序图中展示
启动设置

启动设置为全局控件,影响启动趋势,慢启动分析、启动崩溃分析中的数据,修改后实时生效,页面将会自动刷新:
慢启动阈值:超过自设置阈值的启动被定义为慢启动,可以在慢启动分析中分类展示;冷启动/首次启动默认为3秒,可以在弹窗中修改;热启动默认为1秒,可以在弹窗中修改
注意
必须为数字、仅保留到两位小数、最小0.01
启动耗时:超出的将不计入启动耗时、慢启动以及启动崩溃,默认上限启动耗时上限为8秒。您可以在启动设置中子定义启动耗时上限,可以自定义设置启动上限,最高值为20秒
注意
必须为数字、仅保留到两位小数、最多为20秒、最小0.02s、慢启动阈值不能超过启动耗时上限
启动趋势
启动耗时和次数
展示当前筛选维度和时间状态下的启动次数、平均耗时、以及分位数,字段含义如下:
冷/热/首次启动次数:在筛选时间段+条件下的启动次数
冷/热/首次启动耗时平均值:在筛选时间段+条件下的启动耗时平均值
冷/热/首次启动耗时50%分位数:在筛选时间段+条件下的启动耗时的中位数
冷/热/首次启动耗时75%分位数:在筛选时间段+条件下的启动耗时的75%分位数
冷/热/首次启动耗时90%分位数:在筛选时间段+条件下的启动耗时的90%分位数
启动耗时分布
展示当前筛选维度和时间状态下的冷/热/首次启动耗时分布。图表颗粒度:按照每x.y00~x.y99秒(s)划分,字段含义如下:
冷/热/首次启动分布次数(折线展示):在整体的筛选时间段内,以及筛选条件+启动耗时范围内的启动次数
冷/热/首次启动耗时占比(柱形图中展示):冷/热/首次启动分布次数/(在整体的筛选时间段内,以及筛选条件下的总冷/热/首次启动启动次数)
性能分解
展示当前筛选维度和时间状态下的性能分解的时间,仅限首次启动、冷启动;在选择热启动时,不展示此图表。
如果您有自行埋点上传更细粒度的耗时(安卓/iOS均最多埋10个点),则按照您埋点所取数据展示,按照开始时间-结束时间计算平均值,和默认采集的几个耗时段同时展示在趋势图表中。预置字段的含义请参考本文档中的「名词解释」部分
慢启动分析
慢启动耗时和次数
展示当前筛选维度和时间状态下的慢启动的次数、正常启动次数、以及平均慢启动耗时,字段含义如下:
慢启动次数:在筛选时间段+条件下符合慢启动条件的次数
正常启动次数:在筛选时间段+条件下的总启动次数-慢启动次数
平均慢启动耗时:安卓在筛选时间段+条件下的慢启动耗时平均值
慢启动列表
展示慢启动问题发生的列表,字段如下:
umid:友盟id,标记设备的唯一标识
用户ID:您可以通过账号统计如没有展示“--”
发生时间:服务端获取到数据的时间
问题类型:慢启动
应用版本
启动时长(单位为秒)
设备型号
慢启动详情

展示慢启动设备的详细启动情况与设备信息,如果您设置了账号统计则也会展示用户ID
启动时序图展示单一设备的启动时序,总耗时预置采集和自定义采集在同一张图中展示,如果没有自定义采集则只展示总耗时和预置采集内容。预置采集的字段详细定义请参考本文档中的名词解释,自定义埋点定义启动阶段请参考集成文档
设备信息中展示了此台设备的详细信息,分为设备信息和操作系统信息
启动崩溃分析

展示首次启动、冷启动、热启动筛选条件下的崩溃率、崩溃次数、影响用户数、影响用户占比的趋势以及列表。可下钻至某条崩溃的错误详情页面,按照设备已经启动的时间,默认设置为8秒,用户可以在启动设置中自行更改,更改后页面自动刷新,展示新定义下的启动崩溃情况
崩溃列表与崩溃分布展示的是启动阶段的崩溃与维度分布情况,点击崩溃列表中的摘要可以跳转至此条崩溃的错误详情页面,功能使用上与崩溃分析一致,详情页面的说明请见错误详情。
内存分析
因OOM的采集方式在安卓和iOS中不同,OOM异常安卓端跟随崩溃采集,iOS需要单独采集。故而安卓的OOM已经在崩溃分析中展示,您可以在安卓平台的崩溃分析中筛选“OutofMemory”的关键词查看,iOS 带有「OOM异常」左导中单独展示OOM。
概述
内存分析提供内线上OOM异常的监控与分析,帮助开发者及时发现与定位线上OOM问题。同时,提供APP运行阶段内存占用情况,为应用内存优化提供关键指标数据。
OOM异常定义
基础定义
OOM异常:OutOfMemoryError
Android OOM
安卓OOM在崩溃分析中展示,在错误列表中搜索“OutofMemory” 即可
iOS OOM
由于iOS的Jetsam机制,当程序内存超出限制时造成的一种特殊的Crash。当前QT主要捕获对用户影响更大的FOOM。
采样配置说明
OOM异常:
Android:Android端OOM异常是崩溃分析的子集,因此不单独提供开关配置,是否采集OOM与是否采集Crash同步
iOS:提供独立开关配置,可自行配置开启或关闭,请参考集成文档
内存占用:
开关配置:提供独立开关配置,可自行配置开启或关闭,请参考集成文档
参数 | 参数字段 | 默认值 |
内存信息采样率 | apm_memperf_sampling_rate | 1% |
内存信息采集频率 | apm_memperf_collect_interval | 5秒 |
内存信息上报间隔 | record_accumulation_time | 60秒 |
内存信息单次监控最大时长 | apm_memperf_collect_max_period_sec | 10分钟 |
OOM异常
OOM异常趋势
错误数:在一定时间范围和筛选条件下,发生OOM异常的次数
错误率:在一定时间范围和筛选条件下,发生OOM异常的次数/启动次数
影响用户数:在一定时间范围和筛选条件下,发生OOM异常的设备去重数
影响用户占比:在一定时间范围和筛选条件下,发生OOM异常的设备去重数/活跃设备去重数

OOM异常分布
在所选时间范围和筛选条件下,按照设备(机型)、系统、运营商、版本、崩溃页面、运行时长、首次启动渠道、地域八个维度的OOM异常次数分布排行,并可通过点击「明细」查看OOM异常次数和影响用户数详情

OOM异常列表
在所选时间范围和筛选条件下,所有OOM异常日志聚合后的错误列表,默认按照OOM异常次数降序展示,帮助您快速的找到OOM异常次数最多、影响最严重的错误。您也可以选择按照影响人数排行,找到影响面积最大的错误

聚合方式说明
Android OOM:基于崩溃信息与崩溃点进行聚合
iOS OOM:基于崩溃前最后停留页面进行聚合
将错误摘要相同的错误日志聚合在一起,展示其详细信息,帮助您快速定位问题、解决问题。
其中,iOS OOM日志详情中指标信息含义如下
app:APP真实使用内存(app Used Memroy)
free:APP可用内存(usage Comparison Free)
adisk:设备剩余存储空间(free Disk Space)
内存占用

指标说明
提供如下指标的平均值、25%分位值、50%分位值(中位数)、75%分位值和90%分位值。
样本量:采集到的内存信息日志数
指标名称 | 获取方式 | |
Android | 物理内存(后台) | Debug.MemoryInfo.getTotalPss() |
物理内存(前台) | Debug.MemoryInfo.getTotalPss() | |
Java使用内存(后台) | Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory() | |
Java使用内存(前台) | Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory() | |
Java内存使用率(后台) | java_heap_background/Runtime.getRuntime().maxMemory() | |
Java内存使用率(前台) | java_heap_foreground/Runtime.getRuntime().maxMemory() | |
显存(后台) | Debug.MemoryInfo.getMemoryStat("summary.graphics") | |
显存(前台) | Debug.MemoryInfo.getMemoryStat("summary.graphics") | |
虚拟内存(后台) | /proc/进程pid/status | |
虚拟内存(前台) | /proc/进程pid/status | |
Java物理内存使用(后台) | Debug.MemoryInfo.dalvikPss | |
Java物理内存使用(前台) | Debug.MemoryInfo.dalvikPss | |
Native物理内存使用(后台) | Debug.MemoryInfo.nativePss | |
Native物理内存使用(前台) | Debug.MemoryInfo.nativePss | |
iOS | APP占用内存大小 | appUsedMemory |
APP占用内存比例 | appUsedMemory/totalMemory |
指标分布
所选指标按照一定区间分布的情况以及在关键维度细分下的中位数表现。
指标
在所选时间范围和筛选条件下,所选指标数据在各个区间内的样本量分布占比情况
维度细分
在所选时间范围和筛选条件下,所选指标数据在设备、系统、版本、渠道四个维度下的中位数表现
网络分析
概述
网络分析模块涵盖四个部分,HTTP、DNS、CDN以及网络错误。帮助您整体评估应用的网络性能并及时发现并解决网络问题,提高网络质量性能体验。
网络分析在配置与采样管理中的开关和采样率统一控制HTTP、DNS、CDN以及网络错误
名词解释
字段名称 | 含义 |
响应时间 | 服务端响应时间,包括接收响应内容的时间 |
吞吐量 | Requests per minute,筛选条件下平均每分钟的 HTTP 请求数量 |
总耗时 | 单个网络请求的端到端耗时 |
传输数据量 | 筛选条件下所有请求及对应响应的数据总量 |
访问量 | 某个地域维度下所有URL的访问数 |
首包时间 | 从发送HTTP请求结束开始,到收到服务器返回的第一个数据包所用时间 |
DNS时间 | Domain Name System解析时间 |
TCP时间 | Transmission Control Prototal传输控制协议建立连接时间 |
SSL时间 | Secure Sockets Layer 握手时间 |
总请求数 | 总请求次数 |
网络错误数 | HTTP错误+传输层错误 |
HTTP请求错误次数 | 请求HTTP错误的次数 |
慢请求次数 | 单个地址请求时间超过客户设置的阈值的次数(默认5秒) |
正常请求次数 | 总请求数-慢请求次数 |
CDN相关指标
CDN请求次数 | 筛选条件下的CDN请求次数 |
CDN请求次数占比 | 筛选条件下的CDN请求次数/CDN总请求次数 |
网络时间 | CDN请求的平均请求耗时 |
可用性 | 筛选条件下的成功CDN请求数/筛选条件下的总CDN请求次数 |
传输速率 | CDN请求下行流量/响应时间,取平均值 |
吞吐率 | CDN请求数/分钟数 |
HTTP错误率 | CDN请求状态码>=400的占比 |
网络错误率 | CDN请求状态码=0的占比 |
传输数据量 | CDN请求下行流量总和 |
网络延时 | CDN请求从开始到收到首包的时间 |
同域请求占比 | 客户端地域和主机IP地域相同的CDN请求占总CDN请求的比例 |
采样率
您可以在开关与采样配置中设置网络分析的采样率
HTTP
您可以在此页面查看HTTP的性能相关统计情况,包含响应时间、吞吐量、总耗时、传输数据量等指标。支持查看整体统计、域名以及URL的层级统计,您也可以筛选自身和第三方域名分别查看
网络设置
点击HTTP页面中的「网络设置」按钮后弹出弹窗,用户可以自定义网络慢请求的阈值以及设置自身服务列表。慢请求阈值默认为5秒,精确到小数点后两位,最小0.01s,最大60.00s。请注意填写域名格式为:www.xxxxx.com 。设置自身域名后,HTTP页面中的域名可以通过自身筛选,不是自身的域名被定义为第三方域名

2.整体概况
域名列表中展示所有请求过的域名,可以通过域名列表的排序指标更改列表的域名排列顺序,当前支持通过响应时间、吞吐量、总耗时和传输数据量进行排序。
页面中的大数字卡片中,HTTP包含响应时间、吞吐量、总耗时和传输数据量四个指标。数据统计指标默认展示全部域名的指标情况,可以通过卡片右上角的筛选条件选择左侧列表中的前5个/前10个/前50个域名进行整体指标查看
请求情况记载了时间段内的慢请求、正常请求、以及错误请求占比。慢请求数为总耗时超过了网络设置中设置的阈值的请求数量,正常请求数=总请求数-慢请求数。错误请求占比=错误请求数量/总请求数量。错误请求的详细情况可以在网络分析功能中的第二个三级菜单「网络错误」中查看

3. 域名层级
点击域名列表中的任何一个域名,都会进入域名的层级。在域名的层级下,可以查看此域名中的URL数据情况。支持通过模糊搜索进行域名的查询,选定域名时需点击。
页面中的大数字卡片中,HTTP包含响应时间、吞吐量、总耗时和传输数据量四个指标。数据统计指标默认展示全部域名的指标情况,可以通过卡片右上角的筛选条件选择左侧列表中的前5个/前10个/前50个URL进行整体指标查看
在域名的层级中,支持查看此域名的URL列表,此处展示此域名下的全部URL。支持通过模糊匹配搜索以及导出URL列表。在列表中,可以查看单一URL的最近一次发生时间、总请求次数、慢请求次数、慢请求次数占比、错误请求次数、错误请求占比、响应时间、DNS时间、SSL时间、TCP时间、首包时间

4. URL层级
点击某一个域名的URL后,可以进入单一URL的层级。选定某一个域名下的URL时需要点击。
页面中的大数字卡片中,HTTP包含响应时间、吞吐量、总耗时和传输数据量四个指标。
在URL的层级下,支持查看慢请求列表,列表中展示请求此URL请求耗时超过慢请求阈值的设备情况。字段包含:utdid(设备id,QT识别设备的唯一id,可以在网络错误或者其他错误分析模块的错误明细中查询到此id)、请求发生时间、响应时间、SSL时间、DNS时间、TCP时间、首包时间。数值类型的指标支持排序

网络错误
错误统计
您可以在此页面查看网络错误的上报统计,支持根据URL和状态码进行聚合并可以下钻到错误详情中查看发生网络错误的设备详细情况
趋势图支持查看网络错误次数、错误率、影响用户数、影响用户占比的指标,支持根据页面公共筛选条件进行时间+维度的筛选

2. 错误列表
错误列表中根据URL和网络错误码进行了网络错误的聚合。可以在列表中查看错误的版本范围以及错误次数和影响用户数。次数的列表数据受页面整体筛选组件的影响,请注意公共时间+属性的筛选条件。切换到错误分布可以查看网络错误的维度分布情况

3.错误详情
网络错误详情中,展示单一条网络错误的发生设备以及分布情况。错误明细中展示被采集到发生过访问此URL遇到此状态码的设备详细情况,有助于您选择相应的设备进行问题的复现

4.错误趋势
此处展示此条错误随时间的趋势情况。切换到错误分布可以查看此条错误的维度分布情况

DNS
整体概况
您可以在此页面查看网络的DNS情况,支持下钻地域维度并区分运营商分别查看。支持选择国家(地区)/省/城市的维度,默认按照地域维度展示全部有网络数据上报的列表。趋势图中默认展示前五个平均DNS请求最慢的地域,可以在图中的筛选框增加图表中的曲线

2.地域层级
点击国家(地区)/省/城市后,可以查看到该地域下的不同运营商的DNS情况,图表中默认展示DNS最慢的前五个运营商

3.运营商层级
下钻点击某一个运营商后,图表展示此运营商的访问量、SSL时间、DNS时间、响应时间、TCP时间以及首包时间

4.地域列表
地域列表中按照地域维度展示访问量、SSL时间、DNS时间、响应时间、TCP时间、首包时间

CDN
CDN的采样率和开关受网络分析统一管理
需要先配置CDN域名和厂商,添加后保存,会利用此信息从网络分析日志中分析CDN数据,如果数据量较大,配置后需要10分钟左右生效

CDN趋势中展示了所选厂商/域名下的CDN指标,相关指标定义请见上述CDN指标术语表

地域分布展示了不同地域的CDN网络情况,以及跨地域的CDN请求情况,飞线的箭头方向展示了进出某地域的CDN请求情况,可以选择开启/关闭飞线

地域列表展示了CDN分地域的请求详情,可以在地域下钻到主机IP进行查看详细信息

主机IP列表展示了不同主机IP以及下钻到客户端地域中的CDN数值

H5页面分析
概述
H5页面分析分为用户感知、加载性能、慢加载三大模块,可以实时监控应用中H5页面的性能情况,需要额外集成JS SDK
指标说明
用户感知指标
指标名称 | 描述 |
首屏时间(FP) | First Paint,从打开页面到首个像素渲染到页面的时长 |
首次内容绘制时间(FCP) | First Contentful Paint,首次绘制完成DOM内容的时长,内容包括文本、图片(包含背景图)、非白色的 canvas 或 SVG,也包括带有正在加载中的 Web 字体的文本 |
页面可交互时间(TTI) | Time to interactive,从页面加载开始到页面处于完全可交互状态的时长。 |
首次加载跳出率 | 每个session中,第一个页面完全加载前用户跳出率 |
1秒快开比 | 首屏完全加载时长≤1s的PV占比 |
2秒快开比 | 首屏完全加载时长≤2s的PV占比 |
5秒慢开比 | 首屏完全加载时长>5s的PV占比 |
页面加载指标
指标名称 | 描述 | 计算方式 |
卸载页面(Unload) | unload事件时间 | unloadEnd-unloadStart |
重定向(Redirect) | redirect事件时间 | redirectStart-redirectEnd |
检查缓存(Appcache) | Appcache | domainLookupStart-fetchStart |
DNS查询 | DNS解析耗时 | domainLookupEnd - domainLookupStart |
TCP连接 | TCP连接耗时 | connectEnd - connectStart |
SSL建连 | SSL 连接时间 | connectEnd - secureConnectionStart |
请求响应/ 首字节网络请求 | 首字节响应时间Time to First Byte(TTFB) | responseStart - requestStart |
首字节 | first byte,收到首字节的时间 | responseStart - fetchStart |
内容传输 | 数据传输耗时,Response阶段耗时 | responseEnd - responseStart |
DOM解析 | DOM 解析耗时 | domInteractive - responseEnd |
DOM Ready | HTML加载完成时间? | domContentLoadEventEnd - fetchStart |
资源加载 | 资源加载耗时(页面中同步加载的资源) | loadEventStart - domContentLoadedEventEnd |
load事件时间 | load事件时间 | loadEventEnd-loadEventStart |
页面完全加载 | 页面完全加载时间 | LoadEventEnd - fetchStart |
用户感知
用户感知包含整体趋势、样本分布、维度分布、指标列表
整体筛选控件支持筛选时间范围、属性维度、页面、高级功能。启动页面的筛选支持按照域名进行聚合,如果需要筛选某个URL,请先选择对应的域名,再在域名下筛选URL

样本分布和维度分布指的是所选指标下的,样本分布按照各个维度下求指标的平均值,支持Top 5 和明细的查看

指标列表展示所有指标,支持导出,包含50%、90%、95%分位值

加载性能
加载性能包含整体趋势、平均时长、指标列表、样本分布和维度分布


整体趋势可以查看加载指标的平均值、50%、90%、95%分位值
平均时长代表了所选时间段和条件下,所有加载数据的平均值
样本分布和维度分布列出了各个指标的采集样本分布,以及在各个筛选条件下的维度分布情况

慢加载
慢加载包含加载URL列表,URL请求样本分布、请求ID列表和单次请求加载时序图

您可以自定义慢请求的整体阈值,页面完全加载时长超过慢加载阈值的被视为慢启动,默认为3秒,设定后页面即刻刷新
URL列表中包含请求URL的列表,URL以host+path进行聚合,点击URL后可以查看到在所有筛选的时间和条件下每次慢请求的ID list

点击URL行旁边的维度分布可以展开整体的维度分布图,展示了这个URL按照Host+Path聚合后,在每个维度下面的数量分布

点击请求ID行右边的加载时序图,即可展开这次慢请求的详情,其中展示了本次请求的详细设备信息以及页面加载的完整生命周期

原生页面分析
原生页面分析可以支持洞察应用的页面性能问题,包含性能总览、流畅性、丢帧以及页面加载的功能模块。
字段表
字段名称 | 含义 |
页面触发次数 | 应用中页面触发次数 |
页面加载时长 | 页面的加载时长 |
页面崩溃数 | 页面加载后发生崩溃的数量 |
页面慢加载数 | 页面加载时长超过设置阈值的次数 |
FPS | 页面每次触发的FPS(每秒传输帧数) |
丢帧 | 丢帧的上限阈值是60,低于此上限的FPS会为计做丢帧 |
开关和采样率
支持在采样率与开关中选择appkey并点击修改配置,在页面中打开原生页面分析的开关并且设置采样率。

原生页面设置

此项为可选设置项,我们建议您根据业务自身要求设置对原生页面的要求,如果您偏向使用默认的阈值或不需要对页面进行聚类分析,请忽略此章节。
您可以在设置-原生页面设置中,配置慢加载的阈值、FPS流畅度的阈值、丢帧的阈值以及页面组的配置:
1.慢加载阈值:默认为3.00秒,精确到0.01s,最少0.01s,最长不超过15.00s,需要输入数字。会影响原生页面功能中对慢加载的判断,设置后立即生效。

2. 丢帧设置:区间型设置方式:0~A为非常满意;A~B为满意;B~C为可忍受,大于等于C为难以忍受。您可以更改A、B、C的值、无单位、默认A = 3;B =9;C=25

3. FPS流畅度设置:区间型设置方式:0~A为难以忍受;A~B为可忍受;大于B为满意,您可以更改A、B的值、无单位、默认A = 40;B =50

4. 页面组设置
您可以自定义页面的分组,将会在原生页面分析中的几个模块支持聚合统计分析。
安卓默认存在两个预置页面组,自动根据包名判断为自身页面组还是第三方页面组,iOS不包含此功能。
您可以点击“新建页面组”的按钮进行创建,注意此处您选择的需要是已经采集上报的数据,如果您还没有集成上报数据,那么在设置的时候是无法选择页面的。您也可以编辑现有的页面组,进行增加和删减,不同页面组之间包含的页面不互斥可以灵活选择。在预置的页面组之外,您最多可以创建20个页面组。

页面性能总览

页面性能总览支持查看原生页面的数据统计情况,整体评估页面/页面组的性能效果。详细的加载详情、流畅度分析详情可以在页面加载/流畅性和丢帧的页面中查看。
您可以筛选90天内的时间范围进行查看,支持九大维度进行筛选以及用户查询(utdid/用户ID)
趋势图中支持查看页面加载的样本量、页面慢加载率和页面崩溃率的指标查看
列表中支持查看页面和页面组列表的数据,支持导出
注意:因SDK对不同字段的上报机制不同,如果您的数据较少在极短的极端情况下,可能存在某个指标的延迟,SDK的上报策略如下:
iOS:
【页面采集】:1、目前版本SDK只采集页面创建的时间,非创建页面过程不做采集;2、采集开始:从页面创建的第一个生命周期方法开始计算;采集结束:页面创建的最后一个生命周期方法结束;3、落盘逻辑:页面采集结束即持久化到本地,聚合10分钟数据打性能报文上报
【帧率采集】1、采集开始:从页面创建完成开始采集帧率信息;采集结束:页面切换或采集时长达到上限则结束采集;2、SDK默认采集规则:1秒钟采集一次,采集6次持久化到文件记录到协议中的一条数据,聚合1分钟的数据,最长采集5分钟3、落盘逻辑:聚合10分钟数据打性能报文上报
Android:
【页面采集】:1、目前版本SDK只采集页面创建的时间,页面back等非创建页面的过程不做采集;2、采集开始:从页面创建的第一个生命周期方法开始计算;采集结束:页面创建的最后一个生命周期方法结束;3、落盘逻辑:页面采集结束即持久化到本地,聚合1分钟数据打性能报文;发送逻辑:默认延迟1秒钟开始上报,冷启动时延迟1秒钟上报所有类型数据
【帧率采集】1、采集开始:从页面创建完成开始采集帧率信息;采集结束:页面切换或采集时长达到上限则结束采集;2、SDK默认采集规则:1秒钟采集一次,采集6次持久化到文件记录到协议中的一条数据,聚合1分钟的数据,最长采集5分钟3、落盘逻辑:聚合1分钟数据打性能报文;发送逻辑:默认延迟1秒钟开始上报,冷启动时延迟1秒钟上报所有类型数据

流畅性和丢帧
此模块包含流畅性和丢帧两个部分
流畅性分析

此模块帮助分析原生页面的FPS(每秒传输帧数)数据情况.
FPS分布支持查看页面加载次数中的FPS分布占比,包含平均值、分位值和样本分布。样本分布的阈值可以点击右上角设置。
列表中支持查看页面、页面组列表的指标情况、维度分布中支持查看查看各个维度的FPS排行。
丢帧分析

丢帧的定义:如果每秒传输帧数小于60, 则被视为丢帧。丢帧分布中根据丢帧的个数计算分布占比。您可以点击右上角进行设置,分为非常满意、满意、可忍受、难以忍受四个档位。大数字卡片同时提供了丢帧数的平均值、50%、90%、95%分位值。
列表和分布中提供了页面和页面组的丢帧详细情况和分布。
页面加载

原生页面加载功能用于分析慢加载和页面崩溃的情况。其中,慢加载是根据页面加载时长筛选出加载时长过长的加载次数,您可以点击右上角中的阈值设置来配置慢加载的阈值,设置后即时生效。页面崩溃是指页面加载过程中发生崩溃情况,与崩溃进行联动分析。
加载异常趋势中提供了慢加载次数和页面崩溃次数的流程图
列表中支持查看页面和页面组的加载相关数据,如果慢加载数/页面崩溃次数>0, 则可以在操作中点击页面慢加载详情/页面崩溃详情进行详细内容的查看
页面慢加载详情:支持查看每次慢加载的详细信息、您可以查看发生在同一页面下的多次慢加载的设备信息和加载时序图。加载时许图中包含预置采集、总耗时和自定义的加载内容。您可以在SDK中通过页面加载阶段埋点进行设置。
页面崩溃详情中展示了发生在页面的崩溃情况,您可以通过时间流查看不同的崩溃
分布中提供了慢加载分布和加载崩溃分布,用于查看在不同维度下的数据情况
自定义聚合
概述
为解决企业的个性化错误归类流转问题,自定义聚合模块支持自主设定聚合类别及特征因子,在错误堆栈符号化聚合时自动纳入聚合类别,错误列表自动按照自定义类别区分,且支持聚合类别二次分类
名词解释
自定义聚合:本质上是根据您自身的需要自定义错误日志聚合的方式,在我们后台基础算法的基础上,我们会将您设置的特征因子考虑进来,将您的错误信息聚合到您自定义的聚合类别中去
聚合类别:您根据业务需要设定的聚合类别,是错误的大类,比如您有多个小组的开发人员处理错误,您可以将组名设置为聚合类别,聚合类别包含多个特征因子
特征因子:特征因子是聚合类别的判断依据,是一个或者多个字符串组成的,在进行错误的归类时,我们会梳理堆栈中出现的特征因子并且根据此将错误归类到不同的聚合类别中
功能说明
自定义聚合列表
可以在此页面编辑聚合类别,通过点击“添加聚合类别”按钮可以手动上报聚合类别,支持编辑聚合类别名,类别显示名,颜色。聚合类别支持编辑特征因子和删除的操作

特征因子列表
点击“编辑特征因子”按钮可以跳转到特征因子列表页面,在此页面中可以添加特征因子,可以针对特征因子进行删除和移动,可以根据堆栈中出现的字段设定特征因子

错误列表中的应用
错误列表中增加了自定义聚合的列,在这里我们会展示所匹配到的聚合类别
如果针对某一条错误,您想更改它的自定义聚合类型,可以通过下拉框中进行聚合类别的转移,转移后,再上传的错误日志如果也被分配到这个错误ID上,我们会根据新的聚合类别展示
日志回捞
概述
支持设置自定义日志并缓存在设备中。在发生问题时,如果需要追查、复现特别设备定位问题,可以利用日志回捞的功能对设备进行远程下发日志捞取请求,并获取到所选时段的自定义日志。
日志文件会进行加密并且上传时压缩节约70%~90%的大小,保证终端设备的性能并减少流量消耗。平台会利用下发策略引擎与SDK进行交互,在应用启动时开始日志拉取。
功能说明
请注意,日志回捞功能在2022年9月以后的部署版本中支持。如果您的产品部署时间在这之前,暂不支持此功能,有需求可以联系我们
日志回捞捞取的日志为自定义日志,自定义日志的上传方式请见Android、iOS集成文档中对日志回捞的说明。
新建日志回捞任务
您可以点击任务列表中「新建任务」进行日志回捞的任务创建。任务创建后有最多10分钟的延迟 可以下发到SDK。
创建时必须填写任务名称
任务描述为可选填项目
捞取时间范围:支持选择在当日日期起前7天后三天的时间,您可以同时选择包含历史时间和未来时间。历史时间的任务会下发到设备上进行一次性捞取日志,如果是未来时间,SDK会每五分钟进行判断是否有新的日志生成,采集到后进行上传
捞取设备选择,您可以选择识别ID或者utdid进行设备定位。识别ID是需要您在初始化的时候自定义设置的设备标识,设置方式请见Android、iOS集成文档中对日志回捞的说明。utdid是QT平台中对设备的ID,您可以在其他模块中查看到utdid,复制到这里进行日志回捞的下发

下图为错误明细中utdid的展示位置,日志回捞不支持使用用户ID进行下发,因用户ID很多用来账号ID等的定义,往往在应用初始化的时候无法获得,会造成日志回捞失败的影响。

您可以选择是否在日志回捞任务结束后收到通知,您可以通过邮箱或者webhook传输到您的交流软件。
此处的设置与监控告警功能中的通知没有关联,您需要在此处单独设置。发送邮箱和webhook的详细说明请见本文中【告警监控】章节。(请注意,日志回捞通知的webhook机器人关键词为“日志回捞”,您需要与监控告警机器人区别开再设置一个)
如果您在一个任务中设置了多个设备,我们会任务您所有的设备都完成了日志的捞取才会视为完成,您也可以在任务进行中返回后台查看设备的完成情况。如果您选择的有历史时间,则会在今天开始等待7天,如果有应用启动成功将日志上报即为完成,如果您选择的有未来的时间,我们会在未来时间的基础上继续等待7天,在这期间如果有应用启动成功将日志上报即为完成。如果在任务下发时间内设备没有开启过应用,或者识别ID/utdid 输入有误,都会造成任务的失败。
任务列表
您可以在任务列表中查看90天内的日志回捞任务,可以点击「任务详情」查看任务的进展情况,点击「复制」新建一个相同模板的日志回捞任务。如果您的任务正在进行中,您可以点击「取消」中止任务。如果您已完成或者已取消的任务过多,需要整理列表,可以点击「删除」将任务从列表中删除。正在进行中的任务需要先取消中止任务再删除。

任务详情

您在任务详情中可以查看到每一个设备捞取到的自定义日志详情,左侧展示所有的ID。如果您设置的是识别ID,因在任务的时间范围内,识别ID存在跨设备的可能(比如使用了账号邮箱作为识别ID,但是终端用户在两个设备上分别使用了这个账号邮箱,因此会造成识别ID对应多设备的问题)。为了适应所有场景,平台在使用识别ID作为下发ID的时候会判断有多少个设备,并分别上报这些设备的自定义日志,所以您会看到任务详情页面中展示识别ID以及下一级的设备ID(utdid)。设备ID的状态与颜色的对应关系如下:

监控告警
概述
提供灵活、准确度高的监控告警功能。您可以根据需求精细制定告警计划:通过错误类型、版本、生效时间以及阈值型或者比较型的规则进行组合,打造适合您和您同事协作习惯的监控告警设定。
功能位置在顶导-告警监控
名词解释
告警触发条件
您设置的以阈值/对比规则以“或”/“且”的方式组成的告警规则
告警触发规则
在您设置的告警触发条件中,哪一条或者几条规则触发了告警。在同一组“且”组合下,必须所有规则都触发,才算作“且”的达成;如果有“或”的组合在,则在此“或”下的单条规则或者“且”组合任意满足一个则触发告警
阈值型规则
您可以选择一种指标(错误数、错误率、影响用户数、影响用户占比),并且选择「大于」某值或者某百分比
对比型规则
您可以选择一种指标(错误数、错误率、影响用户数、影响用户占比),并且选择「比」一天前或者七天前,增多比例,计算方式为:(过去1小时数值-历史1小时数值)/ 历史1小时数值,大于或等于所选值即发送告警
推送规则
告警频率:每整点计算上一小时的告警任务,如果触发则运行通知机制
例:会在13:00时判断12:00~13:00中的数据是否触发了您设置的规则,通知发放可能有分钟级别延迟,您可能会在13:05左右收到告警通知
告警列表

您可以在此页面查看最多90天的告警信息
筛选支持错误类型、涉及版本,一条告警信息可能涉及多个涉及版本
支持筛选「过去1小时」、「今天」、「过去7天」的时间范围,也可以利用日历进行90天内的时间筛选
点击「查看」可查看此条告警的告警详情信息
新建告警计划

您可以点击“新建告警计划”,开始设定您的告警,每个应用最多支持创建10个告警计划:
告警计划名称:
不能与已有计划重复
监测错误类型:
监测错误类型不能重复
Android系统的监测错误类型有:“Java崩溃”、“Native崩溃”、“Java、Native崩溃”、“ANR”、“自定义异常、C#错误(仅限Unity SDK)、Lua(仅限Unity SDK)”
iOS系统的监测错误类型有:“全部崩溃”(OC层崩溃或Swift层崩溃,以及Cpp层崩溃)
告警生效时间:
关闭告警生效时间将默认监控所有时间
最多可以添加三个生效时间段,多条之间的关系为并集(如客户输入每周一9点至19点,又添加每周一12点至20点,则在周一9点至20点生效)
筛选监控设备:
可以选择监控全部设备或者通过utdid/用户ID选择某一个/几个设备进行监控
告警触发条件
每增加一条时,用户先选择阈值型还是对比型,可通过“外或内且”的组合形式多选,也可以只选一条
添加第一条后,可以选择是否增加“且”or“或”;增加“且”条件时,同一组“且”里最多4个;增加“或”条件时,添加的条件中是一个者一组“且”(最多4个),“或”条件最多增加4次
生效应用版本
您可以选择您已有的版本或者全部版本在告警计划中
触达方式
支持邮箱、钉钉、企业微信、飞书,可以多选。钉钉、飞书、企业微信中可以通过创建群组机器人的方式获取告警信息,需要提供webhook链接,获取方式请见本文中设置告警Webhook的部分
邮箱发送需要在组织列表-触达通道中配置发送邮箱,同一组织使用同一发送邮箱
注:为方便告警计划设置,Web端的监控告警不受组织层面的webhook设置控制。所以组织-触达通道设置中的webhook设置不会同步到Web端的监控告警中,我们会以您在新建告警计划中输入的webhook为准进行发送。组织中仅针对发送邮箱进行统一。
发送地址获取:发送邮件的邮箱地址,比如“ceshiwufa@163.com”。
邮箱授权码和SMTP(发件箱服务器地址)获取:
以QQ邮箱为例,在邮箱的“设置-账户-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”中,点击POP3/SMTP服务的”开启“,并通过手机短信生成授权码。

以163网易邮箱为例,可在“设置-POP3/SMTP/IMAP”页面中,点击IMAP/SMTP服务的”开启“,并通过手机短信生成授权码。

告警计划列表
创建后的告警会在告警计划列表中展示,您在错误列表中针对某单一错误进行的告警也会展示在该列表中。告警计划列表最多展示10条告警计划
告警明细
点击告警计划的“消息列表”可以进入告警明细,记录了触发告警的错误列表以及对应的时间段。

单条错误告警
支持在错误列表中点击“告警”按钮,即可针对此错误摘要(与错误ID为一一对应关系)进行告警。支持模块有:概览、崩溃分析、ANR分析、自定义异常、卡顿分析、启动崩溃分析、OOM异常

点击后即可在告警设置页面继续编辑告警计划
设置告警webhook
设置方式详见性能体验-监控告警配置说明
用户细查
筛选条件
本模块支持您通过错误类型、错误属性、utdid/用户ID、自定义字段和错误ID进行高级搜索。其中,自定义字段模糊匹配,用户ID搜索为精确匹配。
错误类型
Android端:全部错误、Java崩溃、Native崩溃、ANR、自定义异常、C#错误(Unity)、Lua错误(Unity)、卡顿、OOM
iOS端:全部错误、崩溃、卡顿、OOM

错误属性
支持设备机型、操作系统、应用版本、地域、运营商、渠道的筛选
支持对错误处理状态的筛选(在错误列表上,不在筛选条件中)
utdid/用户ID
您可以通过用户ID查询某一用户的错误发生情况,可以通过用户ID或者utdid搜索,可以在用户明细中查看到该用户在所选时间内的所有日志。
utdid:QT平台的唯一设备标识,您可以通过错误明细中看到utdid
用户ID:支持设置用户唯一识别账号,集成方式请见集成文档
自定义字段
当崩溃发生时,您可以在该回调方法中返回string类型的业务自定义数据,该数据会写入到崩溃文件中并上传到服务器展示。具体调用方法说明请见集成文档
错误ID
错误日志聚合后的唯一识别ID,可在错误列表中查看获得。
错误列表
在时间范围与筛选维度条件下,所有崩溃日志按照崩溃摘要进行聚合后的错误列表。
错误排行:默认按照崩溃次数降序展示,帮助您快速的找到崩溃次数最多、影响最严重的错误。您也可以选择按照影响人数排行,找到影响面积最大的错误。
错误ID:是错误摘要的唯一识别
版本范围:在当前筛选条件下,该崩溃发生的版本范围
处理状态:该错误的处理状态,支持设置状态包括未修复、处理中、已忽略、已修复
告警设置:您可以对单个错误进行告警设置,在该位置添加的告警可在监控告警中修改和设置
标签:支持对错误摘要添加标签
导出:导出当前展示的错误列表内容,一次导出最多支持1000条
趋势分析
在一定筛选条件与时间范围内,错误次数、错误率、影响用户数、影响用户占比的图表趋势,可以选择应用版本进行对比。

用户明细
当对utdid/用户ID进行搜索时,可以在用户明细中查看到该用户在所选时间及筛选条件下的所有日志详情。

Dart异常
提供Flutter Dart异常的监控与分析,需要您桥接并进行数据接口上报,上报方式请见Android/iOS的flutter接入文档,桥接方式,如您需要培训请随时联系我们
模块位置:功能位于性能监控-Flutter分析-Dart异常页面

筛选框:您可以灵活筛选时间范围、维度、或者其他高级功能
错误趋势:展示Dart异常的错误数、错误率、影响用户数、影响用户占比
*您可以在配置管理-开关与采样配置中设置已经忽略的错误是否计入统计,如配置为不计入,则此处的大卡片数据不会包含已经忽略的错误*
错误列表展示错误摘要、平台名称、最近一次时间、版本范围、次数以及处理状态,您也可以进行告警设置进行单条错误告警

错误分布支持进行7个纬度的分布查看,您可以查看top5的维度或者点击“详情”查看全部排名
错误详情中展示了错误日志的详细信息,经过聚合在一条中的错误会在一个页面中展示
大字卡片展示了错误的基本信息

错误明细中展示详细日志、行为日志(错误发生前10步的行为)、内存快照
页面下方展示这条错误的趋势以及错误备注和更改记录
您可以在告警监控-监测告警中创建新的告警计划,选择Dart异常,或者在错误列表中选择单条Dart异常进行告警

用户会话追踪
您可以通过此功能,搜索单一用户,将用户的异常情况、性能情况以及行为事件(若您同时使用Quick Tracking的流量分析)进行串联,完整还原用户的使用路径,判断性能对用户体验的影响。
*如果您同时使用Quick Tracking的流量分析模块,使用用户追踪功能时会自动串联您设置的自定义事件或者预置事件,帮助您更深一步的了解用户行为。
您可以通过utdid(QT平台定义的单一设备id)或者用户ID(您自定义设置的ID)来进行搜索。
由于您自定义设置的ID可能使用账号、会员等等可能在多个设备中登录的情况,我们会一一枚举在您的查询时间内用户ID对应多少个utdid再分别展示。

我们提供ID收藏夹的功能,如果您有某些ID需要经常查询使用,可以进行收藏,最多支持收藏50个。
查询结果:展示您所查询的用户的日志数据。
*请注意时间控件,我们会以天为单位筛选数据
点击任意异常/事件的详情,可查看详细信息

您也可以在性能体验模块中的其他位置查看用户ID/utdid时,直接进行跳转到用户追踪模块

iOS 系统符号表
性能体验模块支持iOS系统符号表的解析功能,如果您需要进行系统层堆栈的解析,请使用我方提供的iOS系统符号表并在页面中进行上传
注:因符号表文件较大,如果您的空间有限,可以先上传近期(我们给您的文件中大版本号的)的符号表文件用于解析,这些符号表的用户覆盖率会比较大


系统版本号请使用我方给您的文件中的文件名作为版本号,如果名称过长请忽略括号里的内容