性能分析平台使用说明
产品简介
性能分析是用于评估和优化小程序性能的工具。帮助开发者监测和分析小程序的性能指标,以优化用户体验和应用性能。包含性能指标的数据看板、性能预警以及分析归因能力。性能指标看板展示小程序的性能状况,协助发现潜在的性能问题。异常预警提供异常指标的错误频率、影响范围、异常归因等信息,帮助快速定位和解决问题,提高小程序的稳定性和可靠性。
作为抖音小程序官方数据平台,我们提供以下两类能力:
(1)性能报告:提供平台统计数据、BI 数据报表等多项数据分析服务,帮助小程序开发者了解应用性能状态,更高效地发现性能问题,并得到解决方案。
(2)智能优化:提供性能分或单个指标的静态诊断(正向诊断)、波动归因(劣化归因)结果,部分场景下将直接给出优化建议。
(3)性能预警:对用户体验产生严重影响的指标提供告警和异常归因能力,帮助开发者及时察觉线上故障,保障小程序的正常使用体验。
性能报告
性能概览介绍
性能概览模块提供最核心性能指标,这些指标能够帮助开发者了解小程序的整体性能状况。提供指标波动情况与同类型小程序的水平参考,指导开发者的优化方向。
内容概要:指标看板提供小程序 T+1 天级数据、平台上同类目小程序的分位值或平均值作为优化参考目标,当指标值劣于同类目值时,表示该指标急待优化。
指标卡:展示昨日(T-1)指标值和较(T-2)、 较同类型小程序(T-1)环比,包含启动性能、运行性能和质量监测三个子模块的核心数据。
全局筛选维度:
- •版本:支持筛选指定时间区间小程序发布过的所有版本的版本号。
- •时间:指标卡仅支持天级筛选,最大支持查询 30 天。
- •小程序宿主:小程序的运行平台,可选全部、抖音、抖音火山版、抖音极速版。
- •设备类型:设备系统类型,可选全部、Android、iOS。
- •设备性能分级:根据抖音平台 benchmark 标准计算,可选全部、高端机、中端机、低端机。
- •场景入口:小程序挂载页面来源,可选当前小程序的所有入口。
- •启动页面:支持筛选当前小程序线上所有启动页面的路径。
性能分:
最核心的数据指标主要分为三大类:
(1)启动性能核心数据:小程序冷启动的相关核心数据,用来描述小程序启动时的用户体验。
(2)运行性能核心数据:小程序运行时的相关核心数据,用来描述小程序运行时的用户体验,如页面切换及网络是否较慢。
(3)质量监测核心数据:小程序质量相关核心数据,用来描述小程序的可用性,如白屏、页面元素渲染异常、JSAPI 异常指标及原因分布。
(4)重点能力核心数据:小程序重点能力的性能及稳定性,用来描述小程序能力的可用性及用户体验。
模块 | 指标名称 | 指标口径 |
启动性能核心数据 | 冷启动耗时 | |
冷启动打开率 | ||
冷启动打开次数 | 各场景入口点击冷启动小程序的次数 | |
冷启动流失人数 | ||
首次有意义渲染耗时 | ||
运行性能核心数据 | 页面切换耗时 | 从触发路由切换到下一级页面,到目标页面最大元素渲染完成的耗时,即次页 LCP |
页面切换较慢占比 | 页面切换耗时大于 1200ms,占总页面切换耗时次数的比例 | |
网络请求耗时 | 从触发网络请求,到网络请求结果返回的耗时,包括请求成功和失败场景 | |
质量监测核心数据 | 质量异常影响人数 | 质量监测模块中,白屏影响人数+页面元素渲染异常影响人数+JSAPI 调用异常影响人数 |
白屏次数 | 用户访问小程序内页面时遇到白屏问题的次数 | |
页面元素渲染异常次数 | 页面内元素渲染时因发生 JSError 等异常导致元素无法正常展示的次数 | |
JSAPI 调用异常次数 | 页面内调用 JSAPI 时结果为 fail 的次数 | |
重点能力核心数据 | 视频启播耗时 | 从video组件创建到视频首帧渲染完成耗时 |
视频未启播率 | (从video组件创建到首帧渲染完成期间离开页面次数+启播期间video播放错误次数)/video组件创建总次数 | |
视频未启播次数 | 从video组件创建到首帧渲染完成期间离开页面次数+启播期间video播放错误次数 | |
播放卡顿率 | 视频播放过程中出现卡顿事件的播放次数/视频播放总次数 |
数据解析方式
了解小程序所处水平。
看板中的每个指标卡提供了与同类型小程序基线的对比,如下图。
较昨日的增减百分比 = ((T 的值 - T-1 的值) / T-1 的值) * 100
。较同类型的增减百分比 = ((T 的值 - 同类型小程序 T 日较差的值) / 同类型小程序 T 日较差的值) * 100
比如下图红框表示相对于同类型较差的小程序的水平。T 表示时间 filter 取值具体某个日期。
如果小程序劣于同类型值,表示小程序已经处于较差水平,急需优化。
如何看相对优劣程度:
- •冷启动耗时:较同类型高时,启动速度慢于大多数同类型小程序,表示急需优化;
- •冷启动打开率:较同类型低时,流失人数较多,从点击入口到成功进入小程序的用户比例较低。直接影响用户访问量;
- •启动流失人数:较同类型高时,流失人数较多,
流失人数 = 冷启动打开次数 * (1-冷启动打开率)
,可通过优化冷启动打开率减少流失。启动性能
启动性能转化漏斗
根据小程序启动顺序,将启动流程分为 4 个主要阶段,提供阶段间的耗时指标,以分析可优化点。
漏斗层级 | 说明 |
阶段一:打开小程序 | 点击打开小程序 |
阶段二:框架资源准备完成 | 包下载、框架双线程资源(JSC, Webview)运行完成 |
阶段三:页面首帧渲染完成 | 等于 FP |
阶段四:页面最大元素渲染完成 | 等于 LCP 触发 |
次数:进入到当前阶段的次数。
耗时:从上一个阶段到当前阶段的耗时。
转化:当前阶段完成的次数 / 第一阶段完成的次数。
漏斗层级 | 过程指标 | 展示样式 | 指标描述 |
第一层➡️第二层之间 | 代码包下载耗时 | 指标卡 | 小程序代码包下载耗时 |
创建 App 耗时 | 指标卡 | 小程序 App 创建执行耗时,包含小程序 App.js 代码执行,App.onShow, App.onLaunch 同步生命周期执行耗时 | |
HTML 和 CSS 加载耗时 | 指标卡 | 小程序 HTML,CSS 文件加载耗时 | |
第二层➡️第三层之间 | 页面首帧渲染耗时 | 指标卡 | 页面首次渲染开始到渲染完成的耗时 |
启动后立即路由占比 | 指标卡 | 冷启动后,在启动页面渲染完成前路由到其他页面的次数 / 冷启动次数 | |
第三层➡️第四层之间 | 可视区域外图片加载占比 | 指标卡 | 在用户可见窗口区域外加载的图片数量 / 所有图片数量 |
配置方案预取命中率
| 指标卡 | | |
数据预取JS方案命中率 | 指标卡 | ||
数据预取JS方案图片命中率 | 指标卡 | 使用数据预取JS方案。一次冷启动中使用缓存的图片请求数量 / JS中数据预取且成功缓存的图片数量。应尽可能提升命中率,命中率较低建议本地测试请求结果,根据使用文档 |
启动性能明细数据
启动性能明细数据模块内包含以下图表,说明如下:
图表名称 | 说明 |
冷启动耗时分布 | 展示小程序冷启动在不同耗时时段的启动次数占比和启动次数 |
用户冷启动流失耗时分布 | 展示小程序冷启动在不同耗时时段的用户流失人数占比和人数 |
主要场景冷启动耗时 | 展示小程序主要入口场景的冷启动次数占比和冷启动耗时 |
主要场景冷启动打开率 | 展示小程序主要入口场景的冷启动次数占比和冷启动打开率 |
FAQ
(1)启动性能漏斗数据中,前一个阶段到达率低于后续阶段
原因:可能存在启动后立即路由。因为启动耗时是指 从启动到第一个LCP到达,如果启动页面 A 后立即 redirectTo 或者 relaunch 页面 B,此时页面 B 触发页面最大元素渲染完成,但因为页面 A 被销毁,导致页面 A 数据未上报或丢失。
影响面:不影响整体用户体验,但启动后路由直接影响启动耗时,耗时过长有可能导致用户提前离开,建议减少使用。
运行性能
页面切换耗时明细
提供“指定页面”过滤条件,支持选择指定页面查看页面切换耗时明细,以分析各个跳转路径的性能情况。
指定页面:路由切换的目标页面。
来源页面:路由切换的来源页面,如从页面 A 跳转到页面 B,A 为来源页,B 为指定页面。
指标介绍
指标名称 | 指标口径 |
页面切换次数 | 触发切换到下一级页面的总次数 |
页面切换到达率 | 触发切换到下一级页面且页面最大元素渲染完成次数/触发切换到下一级页面的总次数 |
页面切换较慢次数 | 页面切换耗时大于 1000ms 的次数 |
页面切换较慢占比 | 页面切换耗时大于 1000ms 的次数/页面切换总次数 |
页面切换耗时&页面切换耗时分布图表。
图表名称 | 说明 |
页面切换耗时 | 展示对应页面 path 的页面切换次数占比和耗时均值 |
页面切换耗时分布 | 展示页面切换次数和页面切换耗时在各时间段的分布 |
网络请求耗时明细数据
提供小程序网络请求明细数据,以分析网络请求性能及稳定性问题,观测网络请求变化趋势。
“请求目标” 包含 2 级选项:
- •一级选项包括:「全部」、「tt.request」、「tt.downloadfile」、「tt.uploadfile」。
- •二级选项包括:一级选项类型下所有请求的接口地址。
指标介绍。
指标名称 | 指标口径 |
网络请求发起次数 | 用户在小程序页面内触发网络请求的次数。近似值,含有抽样拟合逻辑。 |
网络请求成功耗时 | 从用户在小程序页面内触发网络请求,到网络请求返回结果为 success 的耗时 |
网络请求失败次数 | 网络可用条件下,用户在小程序页面内触发网络请求,网络请求返回结果为 fail 的次数 |
网络请求失败占比 | 网络可用条件下,用户在小程序页面内触发网络请求后返回结果为 fail 的次数/用户在小程序页面内触发网络请求的次数。近似值,含有抽样拟合逻辑。 |
请求接口流量和耗时图表。
图表名称 | 说明 |
请求接口流量和耗时 | 展示请求接口的请求次数和耗时(接口个数最多按网络请求次数降序展示前 10 个) |
质量监测
展示小程序异常情况,提供异常的分布、影响范围、异常归因等信息,帮助开发者了解小程序质量概况,协助快速分析和解决问题,提高小程序的稳定性和可靠性。稳定性性能优化方法请参考《小程序白屏&渲染异常问题优化》。
页面白屏
用户在页面停留一定时间(4s)后,以白屏状态离开就认为是白屏。白屏直接影响用户体验,导致用户终止使用小程序,核心指标如下:
指标名称 | 指标口径 |
白屏次数 | 用户访问小程序内页面时遇到白屏问题的次数 |
白屏占比 | 用户访问小程序内页面时遇到白屏问题的次数/用户访问小程序内页面总次数 |
启动白屏次数 | 用户在小程序冷启动进入小程序页面时遇到白屏问题的次数 |
启动白屏占比 | 用户在小程序冷启动进入小程序页面时遇到白屏问题的次数/用户在小程序冷启动进入落地页次数 |
白屏影响人数 | 访问小程序内页面时遇到白屏问题的用户数去重 |
白屏原因分析 。
- •对当前筛选条件下,所有白屏事件的 errcode 进行聚类后,通过饼状图展示每个聚类下的占比。
- •点击具体某个 errcode,弹窗展示 errcode 下的 Top5 errmsg 及其占比。
- •饼状图最多展示 10 个错误原因。当错误原因>9 个时,按错误原因次数降序排序取前 9 的错误原因进行展示。其余原因统一合并为“其他”。
- •对当前筛选条件下,所有白屏事件的 errcode 进行聚类后,通过饼状图展示每个聚类下的占比。
- •点击具体某个 errcode,弹窗展示 errcode 下的 Top5 errmsg 及其占比。
- •饼状图最多展示 10 个错误原因。当错误原因>9 个时,按错误原因次数降序排序取前 9 的错误原因进行展示。其余原因统一合并为“其他”。
页面元素渲染异常
用户在页面停留一定时间(4s)后,离开时页面部分模块为白屏就认为是页面元素渲染异常。核心指标如下:
指标名称 | 指标口径 |
页面元素渲染异常次数 | 页面内元素渲染时因发生 JSError 等异常导致元素无法正常展示的次数 |
页面元素渲染异常占比 | 页面内元素渲染时因发生 JSError 等异常导致元素无法正常展示的次数/页面访问次数 |
页面元素渲染异常影响人数 | 访问小程序内页面时遇到页面元素渲染异常问题的人数去重 |
JSAPI 调用异常
提供小程序在运行过程中调用 JSAPI 结果为 fail 的明细数据。JSAPI 异常可能导致部分功能不可用。
该模块内支持以下两个筛选。
- •指定页面:支持选择指定页面查看页面内发生的 JSAPI 调用异常情况。选项包括小程序下所有的页面 path。
- •请求接口:支持选择指定接口查看该接口下发生的 JSAPI 调用异常情况。选项包括小程序下所有调用过的 JSAPI。
指标说明。
指标名称 | 指标口径 |
JSAPI 调用异常次数 | 页面内调用 JSAPI 时结果为 fail 的次数 |
JSAPI 调用异常占比 | 页面内调用 JSAPI 时结果为 fail 的次数 / 页面内调用 JSAPI 的次数 |
JSAPI 调用异常影响人数 | 访问小程序内页面时遇到 JSAPI 调用异常问题的人数去重 |
重点能力性能
接入重点能力性能指标覆盖更多性能分析场景,提升平台使用体验。目前提供 video性能相关数据,包含:
- •video启播性能:描述 video 启播期间的体验
- •video运行性能:描述 video 启播后的体验
video 启播性能
video 启播性能明细数据
指标说明
指标名称 | 指标口径 | |
视频启播耗时 | 从video组件创建到 video 首帧渲染完成耗时 | 80分位值 |
视频未启播率 | (从video组件创建到首帧渲染完成期间离开页面次数+启播期间video播放错误次数)/video组件创建总次数 | 绝对值 |
视频未启播次数 | 从video组件创建到首帧渲染完成期间离开页面次数+启播期间video播放错误次数 | 绝对值 |
视频播放错误次数 | 启播期间video播放错误次数 | 绝对值 |
视频启播期间离开人数 | 从video组件创建到首帧渲染完成期间离开页面人数去重 | 绝对值 |
- •较7日前:[1-(所选中日期当日T数据/T-7当日数据)]*100%
- •较同类型:[1-当前小程序数值/与小程序同属三级类目下的所有小程序下的数值的平均值]*100%
video 启动性能明细数据
- •短剧类型小程序:提供短剧ID 相关分布
- •其他小程序:提供 src 相关分布
图表名称 | 数据介绍 |
启播耗时分布 | 启播次数:即video组件创建次数 占比:当前耗时区间下的启播次数占比/总启播次数占比 |
主要剧集启播耗时/主要资源启播耗时 | 启播次数:即video组件创建次数 耗时:坐标所对应的 短剧ID /资源链接 所对应的启播耗时。 |
主要未启播剧集 | 未启播次数:即从video组件创建到首帧渲染完成期间离开页面次数+启播期间video播放错误次数 占比:坐标所对应的 短剧ID /资源链接 所对应的未启播次数/全量未启播次数 |
视频播放错误原因分析 | 对当前筛选条件下,所有视频播放错误事件的errcode进行聚类后,通过饼状图展示每个聚类下的占比。 点击具体某个errcode,弹窗展示errcode下的Top5 errmsg及其占比。 |
video 运行性能
运行性能概览
指标名称 | 指标口径 | 分位值/绝对值 |
播放卡顿率 | 视频播放过程中出现卡顿事件的播放次数/视频播放总次数 | 绝对值 |
播放卡顿次数 | 视频播放过程中出现卡顿事件(解析下一帧时间大于200ms) | 绝对值 |
音画不同步资源占比 (仅短剧小程序展示) | 经过平台检测存在音画不同步问题的资源数量/总资源数量 | 绝对值 |
音画不同步资源数量 (仅短剧小程序展示) | 经过平台检测存在音画不同步问题的资源数量 | 绝对值 |
video 运行性能明细数据
图表名称 | 数据介绍 |
主要播放卡顿剧集 | 播放次数:即video组件创建次数 卡顿率:坐标所对应的 短剧ID /资源链接 所对应的播放卡顿率。 |
播放卡顿原因分析 | 对当前筛选条件下,所有播放卡顿错误事件的errcode进行聚类后,通过饼状图展示每个聚类下的占比。 点击具体某个errcode,弹窗展示errcode下的Top5 errmsg及其占比。 |
音画不同步资源列表 (仅短剧小程序展示) | 以列表形式展示当前小程序下所有音画不同步的剧集信息。 |
FAQ
(1)主要未启播剧集/资源中的 “无效链接” 是什么含义,如何解决?
无效链接定义为使用空src资源来起播导致的失败。
- •未起播定义:
- ◦分子:未收到开始渲染回调,收到onError回调/离开次数
- ◦分母:Video创建后客户端设置/更新视频资源总次数【""空字符也是更新资源】
- •业务场景:开发者使用空白字符串or不合法的剧集id来进行播放
- •用户视角:黑屏界面,与其他起播失败表现相同
智能优化
(1)静态诊断:针对小程序当前性能指标问题,正向分析并提供优化建议。
(2)波动归因:对比小程序诊断日期与对比日期的指标值,给出相应周期指标的变化,以及导致变化的原因,以协助理解指标变更并进行下一步优化。
静态诊断
性能分优化方案
(1)最快提升至下一档
方案介绍:适用于想要快速提升性能分档位,快速获取性能分权益等场景。
指标优化顺序:当前性能分中指标优先档位最低指标,同等档位优先权重高的指标。
(2)优先优化排名较差指标
方案介绍:适用于想按照小程序运行模块进行整体优化,提升小程序整体性能表现,优化同行业排名。
优化建议
此处会与同类型较优秀的小程序对比,输出指标差异及优化空间。其中不同指标诊断略有差异。具体如下:
- •启动耗时:为提供更完整的启动链路问题,此处对比的是冷启动耗时数据,诊断结论中的指标值比性能分中的启动耗时(冷热启)大。
- •启动打开率:为提供更完整的启动链路问题,此处对比的是冷启动打开率数据,诊断结论中的指标值比性能分中的启动耗时(冷热启)偏小。
- •页面切换耗时、页面切换到达率:诊断建议正在建设中,平台暂未提供,可根据指引文档进行优化。
- •白屏占比 / 页面渲染异常占比:建议部分给出当前筛选条件下的异常信息,平台仅给出出现白屏时的异常,不确保是直接原因,请开发者结合业务逻辑判断是否会导致白屏进行处理。
波动归因
性能分归因中会给出导致性能分变化的 top3 指标。如需进行全指标优化,在优化建议部分进行切换查看。
诊断建议
诊断建议部分会给出不同指标的变化原因。其中启动性能部分(启动耗时、启动打开率)与静态诊断类似,也是给出冷启动指标的相对变化,通常来说,冷启动耗时较高,若发生劣化会直接影响整体启动耗时;基于冷启动耗时对比,也能给出能完整链路中的性能问题。
与静态诊断不同点:此处对比的是当前小程序本身,因此诊断建议也是从小程序本身出发,提供主要的影响维度,比如某版本、宿主影响(如需自行排查,也可使用下述拆维诊断详情)。确认影响维度后,如需正向优化,可在静态诊断中筛选该维度,根据诊断建议进行优化。
使用后,欢迎提交您的使用建议,我们将持续优化。
拆维诊断详情
诊断建议中给出的是影响最大的维度,如需自行排查,也可在此处筛选指定维度查看指标波动
性能预警
对严重影响用户体验的指标提供预警能力,让开发者及时感知线上问题并及时止损,提高小程序的稳定性和可靠性。报警提供异常次数、影响范围等信息,协助开发者快速定位和解决问题。支持创建自定义预警规则,如自定义 pv/uv、影响人数、环比波动阈值等,为开发者提供更灵活的小程序性能监控。
报警历史
展示小程序在一定时间段内接收到的预警信息,包含预警时间、预警内容、归因信息等。
预警感知条件:订阅预警规则(性能预警-预警规则-订阅管理),订阅预警规则后才能够接收预警信息。
预警感知群:如果预警通知方式选择了飞书群,进入告警群后可在飞书群中接收预警信息,进群方式如下。
预警规则
提供以下 2 类预警规则,开启订阅后,当指标满足预警条件时会自动触发预警。
(1)默认规则:由平台根据小程序治理策略默认设定,无需重新配置预警规则。我们会在快触及平台治理底线时进行预警。为保证预警的消费必要性,我们优化了预警的频次和阈值,减少不必要的预警产生,具体阈值可能会根据平台策略调整。
(2)自定义规则:支持开发者创建自定义预警规则,可以针对给定指标自定义预警前提,设置更符合需求场景的预警。自定义预警与默认预警触发逻辑不冲突,如果同时满足且订阅两类预警条件,会接收到两条预警信息。
直接在「订阅管理」开启订阅开关,即使用平台的默认告警规则。
默认规则
一级指标名称 | 预警阈值 | 预警间隔(预警产生,具体通知间隔以用户配置为准) |
网络请求失败 |
|
|
页面白屏 |
|
|
视频播放异常 |
|
|
页面元素渲染异常 |
|
|
冷启动耗时 |
| 无 |
冷启动打开率 |
| 无 |
自定义规则
一级指标名称 | 二级指标名称 | 告警前提 绝对值 | 预警条件(上下限) 变化率 | 预警条件(上下限) 绝对值 |
页面白屏 | 页面白屏率 | 5min 周期:页面白屏影响uv数 >= 10 1h 周期:页面白屏影响uv数 >= 200 | [1%, +∞] | (0%, 100%] |
页面白屏次数 | [1%, +∞] | 5min: [10, +∞] 1h: [200, +∞] | ||
页面白屏影响uv数 | [1%, +∞] | 5min: [10, +∞] 1h: [200, +∞] | ||
网络请求失败 | 网络请求失败率 | 5min 周期:网络请求失败影响uv >= 75 1h 周期:网络请求失败影响uv >= 1000 | [1%, +∞] | (0%, 100%] |
网络请求失败次数 | [1%, +∞] | 5min: [75, +∞] 1h: [1000, +∞] | ||
网络请求失败影响uv | [1%, +∞] | 5min: [75, +∞] 1h: [1000, +∞] | ||
视频播放异常 | 视频播放异常率 | 5min 周期:视频播放异常影响uv >= 15 1h 周期:视频播放异常影响uv >= 200 | [1%, +∞] | (0%, 100%] |
视频播放异常次数 | [1%, +∞] | 5min: [15, +∞] 1h: [200, +∞] | ||
视频播放异常影响uv | [1%, +∞] | 5min: [15, +∞] 1h: [200, +∞] | ||
页面元素渲染异常 | 页面元素渲染异常率 | 5min 周期:页面元素渲染异常影响uv >= 10 1h 周期:页面元素渲染异常影响uv >= 200 | [1%, +∞] | (0%, 100%] |
页面元素渲染异常次数 | [1%, +∞] | 5min: [10, +∞] 1h: [200, +∞] | ||
页面元素渲染异常影响uv | [1%, +∞] | 5min: [10, +∞] 1h: [200, +∞] | ||
冷启动耗时 | 冷启动耗时 | 小程序PV:[3000, +∞) 小程序UV:[1000, +∞) 冷启动耗时:(1000, +∞) 冷启动耗时劣化>=50ms 且非框架层策略变更影响(如预加载率,小程序有包率) | [1%, +∞] | (1000, +∞] |
冷启动打开率 | 冷启动打开率 | 小程序PV:[3000, +∞) 小程序UV:[1000, +∞) 冷启动打开率:(0, 1] 冷启动耗时劣化>=3% 且非框架层策略变更影响(如预加载率,小程序有包率) | [3%, +∞] | [0%, 100%] |
冷启动流失人数 | (0, +∞) | (0, +∞) | (0, +∞) |