性能监控展示了小程序整体性能的基本情况,包括启动性能、页面性能和运行性能,能够反应小程序加载和呈现的速度,以及用户交互的响应程序,配合报警和数据探索,可以更快发现性能问题,并作为性能优化的数据依据。
小程序启动是影响小程序使用体验中极为重要的一环,关注启动耗时过长是提高使用体验的重要维度。
小程序的启动过程从用户打开小程序到小程序首页渲染完成。小程序首页渲染完成的标志是首个页面Page.onReady
事件触发。具体时序图如下所示:
启动性能相关指标可以分为三类:启动概览、通用性能指标及初始化性能指标。并通过堆叠图、组合图以及折线图的形式对指标进行可视化展示。
每个图表包含数据:当前时间周期内的指标均值、前一周期的指标值、相对于前一周期的波动。
前一周期的值指的是前一个所选的时间周期内的值。例如选择周期为7天,那么前一周期就是上一个7天。
折线图中能够看到观察在项目设置中设置的糟糕性能基准线,帮助您判断指标值的分布情况。
指标名 | 计算规则 | 说明 | 兼容情况 |
---|---|---|---|
总启动次数 | 冷启动次数 + 热启动次数 | 无 | All |
冷启动 | Pageview.source === launch次数 | 无 | All |
热启动 | Pageview.source === show次数 | 无 | All |
首屏冷启动总耗时 | pageRenderEnd - App.trigger | 从点击小程序到首屏渲染完成的总加载耗时,中间包含代码包下载(非首次启动则不包含)、代码执行、首屏渲染完成等耗时 |
|
小程序初始化耗时 | appInitEnd - App.trigger | 从点击小程序开始到冷启动完成 |
|
下载耗时 | downloadPackage | 代码包下载耗时,首次启动时下载小程序包的耗时 |
|
JS注入耗时 | performance.evaluateScript | JS代码注入耗时,启动过程中注入JS文件的耗时 | 微信小程序 |
首屏加载耗时 | pageLoadStart - appInitEnd | 无 | All |
首屏构建耗时 | pageDomEnd - pageLoadStart | 无 | All |
首屏渲染耗时 | pageRenderEnd - pageDomEnd | 无 | All |
首屏加载总耗时 | pageRenderEnd - appInitEnd | 无 | All |
打开率 | pageRenderEnd次数 / appInitEnd次数 | 启动小程序到首屏渲染的完成率 | All |
流失率 | 1 - 打开率 | 启动小程序但是首屏渲染并未完成就退出的概率 | All |
慢启动率 | 首屏加载总耗时 > 设定阈值的启动次数 | 慢启动的比率 | All |
性能欠佳页面以PID为聚合纬度,展示当前样本量阈值下,所选指标性能欠佳的PID信息。展开该信息,右侧会展示该PID的多指标性能趋势图。单击慢页面次数,可跳转至数据探索,查看慢页面详情。
启动耗时分布可以查看所选指标耗时的分布情况。
优劣化页面以PID为聚合纬度,展示当前所选时间范围内启动性能优化/劣化最严重的PID信息。
小程序页面性能指的是小程序页面跳转时的性能,各项性能指标对应的时间戳如下图所示.
指标说明:
指标名 | 计算规则 | 兼容情况 |
---|---|---|
页面跳转总耗时 | renderEnd - navigateStart | All |
路由切换耗时 | loadStart - navigateStart | All |
页面构建耗时 | domEnd - loadStart | All |
页面渲染耗时 | renderEnd - domEnd | All |
初次渲染(FR) | performance.FR.duration | 微信小程序 |
页面首次绘制(FP) | FP.startTime - loadStart |
|
页面首次内容绘制(FCP) | FCP.startTime - loadStart |
|
页面最大内容绘制(LCP) | LCP.startTime - loadStart |
|
页面渲染跳出率 | renderEnd次数/ navigateStart != 0次数 | All |
慢页面次数 | 页面跳转总耗时 > 设定阈值的上报次数 | All |
说明
小程序Pro监控平台各项功能强依赖PID设置,设置与业务相关的合理的页面标示,可以更好发现性能异常相关问题。
页面耗时分布可以查看所选指标耗时的分布情况。拖动下方的滑动条,可以自定义耗时的显示范围,同时可以在右上角查看所包含的耗时范围内,上报量占比情况。
优劣化页面以PID为聚合纬度,展示当前所选时间范围内页面性能优化/劣化最严重的PID信息。选中相应PID会展示相关指标的趋势信息。同时如果有配置release相关信息,可以在趋势图中展示上线版本。
setData是小程序开发中使用最频繁、也是最容易引发性能问题的接口。setData频率过大会导致JS线程持续繁忙,setData耗时过长会导致页面渲染卡顿。根据setData相关指标的列表,可以按照各项指标进行排序,排查问题。
单击PID可以跳转到数据探索,并保存筛选条件中的小程序类型、系统和PID。
setData列表中展示了PID、setData次数、setData耗时、setData频率和setData大小。
指标说明:
指标 | 计算规则 | 说明 |
---|---|---|
setData次数 | 时间范围内上报次数 | 无。 |
setData耗时 | setData总耗时 / PV数 | 一次PV平均累计的setData耗时。 |
setData频率(每秒) | setData次数 / 时间范围(单位s) | 无。 |
setData大小 | setData总大小 / PV数 | 一次PV平均累计的setData大小。 |